繁体   English   中英

如何在标签栏控制器中从视图控制器中消除父视图?

[英]How to dismiss parent view from View Controller in Tab Bar Controller?

我的应用程序有一个主屏幕( mainView )。 mainView ,我有一个按钮。 当用户点击时,我使用

[self presentViewController:libraryView animated:YES completion:nil]

呈现另一个视图( libraryView )。 然后,在libraryView ,我使用

[self.view addSubview:tabBarController.view]

添加一个具有2个View Controller的UITabBarControllerfeaturedBooksrecentBooks

一切正常。 但是,当我向featureBooks添加按钮以libraryView并返回mainView ,以下方法不起作用

[self dismissViewControllerAnimated: YES completion:nil]
[self.parentViewController dismissViewControllerAnimated: YES completion:nil]
[self.presentingViewController dismissViewControllerAnimated: YES completion:nil]

我知道原因: self是指featureBooks的视图,而不是libraryView

因此,我该如何引用libraryView ,将其关闭,然后从Tab Bar Controller中的视图控制器( featureBooksrecentBooks )返回到mainView

非常感谢你。

使mainView成为libraryView的委托对象...然后,当您从libraryView调用委托方法时,mainView将在其代码中调用方法dismissViewcController。

所以:

1)创建到libraryView控制器.h代码:

@protocol LibraryViewDelegate

      - (void) LibraryViewDelegate_DismissButtonClicked;

@end

2)然后在mainView .h文件中创建一个属性:

@property(nonatomic, assign) NSObject<LibraryViewDelegate> *delegate;

然后将其放入.m

@synthesize delegate;

并在创建libraryView对象之后并且在呈现它之前将mainView分配给该属性

3)将以下代码写入mainview .m文件:

-(void)LibraryViewDelegate_DismissButtonClicked{
      //put here the code for dismissing mainView created modalViewController (libraryView)
}

4)然后编写调用的代码:

[self.delegate LibraryViewDelegate_DismissButtonClicked];

当您按下关闭按钮时,进入libraryView

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM