[英]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的UITabBarController
: featuredBooks
和recentBooks
一切正常。 但是,当我向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中的视图控制器( featureBooks
或recentBooks
)返回到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.