如何在视图控制器中关闭视图控制器中的父视图?
问题描述:
我的应用程序有一个主屏幕(mainView
)。在mainView
上,我有一个按钮。当用户点击它时,我使用如何在视图控制器中关闭视图控制器中的父视图?
[self presentViewController:libraryView animated:YES completion:nil]
以呈现另一个视图(libraryView
)。然后,在libraryView
,我用
[self.view addSubview:tabBarController.view]
添加UITabBarController
有2个视图控制器:featuredBooks
和recentBooks
,一切工作正常。但是,当我加入一个按钮featureBooks
到dissmiss的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
?
非常感谢。
答
制作libraryView的mainView委托对象...然后,当您从libraryView调用委托方法时,mainView将在其代码中调用dismissViewcController方法。
所以:
1)创建到libraryView控制器的.h代码:
@protocol LibraryViewDelegate
- (void) LibraryViewDelegate_DismissButtonClicked;
@end
2)然后创建一个属性到MAINVIEW h文件:
@property(nonatomic, assign) NSObject<LibraryViewDelegate> *delegate;
和以下的成.m one
@synthesize delegate;
并分配到的MainView对象libraryView创建之后和之前这个属性,你将呈现它
3)编写以下代码到MAINVIEW .m文件:
-(void)LibraryViewDelegate_DismissButtonClicked{
//put here the code for dismissing mainView created modalViewController (libraryView)
}
4)然后编写调用的代码:
[self.delegate LibraryViewDelegate_DismissButtonClicked];
到libraryView当你按下按钮辞退
谢谢您的回答和示例代码。在询问示例代码后,我搜索并删除了我的评论:P无论如何,谢谢。 但是,我想你可能会误解我。我想从'featuredBooks'(一个选项卡栏控制器的视图控制器,并且该选项卡栏控制器是'libraryView'的子视图)中关闭'libraryView'。我试过你的代码,但它没有按我想要的方式工作。 再次感谢您的代码。 – 2012-07-29 09:25:23
最后,我做到了。我不再使用Interface Builder,并以编程方式创建Tab Bar Controller,View Controller。现在代表工作正常。 – 2012-07-29 10:27:30