如何在视图控制器中关闭视图控制器中的父视图?

问题描述:

我的应用程序有一个主屏幕(mainView)。在mainView上,我有一个按钮。当用户点击它时,我使用如何在视图控制器中关闭视图控制器中的父视图?

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

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

[self.view addSubview:tabBarController.view] 

添加UITabBarController有2个视图控制器:featuredBooksrecentBooks

,一切工作正常。但是,当我加入一个按钮featureBooks到dissmiss的libraryView,并返回到mainView,下面的方法不起作用

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

我知道了原因:selffeatureBooks的看法,而不是libraryView

那么,我如何参考libraryView,关闭它并从Tab Bar Controller中的视图控制器(featureBooksrecentBooks)返回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当你按下按钮辞退

+0

谢谢您的回答和示例代码。在询问示例代码后,我搜索并删除了我的评论:P无论如何,谢谢。 但是,我想你可能会误解我。我想从'featuredBooks'(一个选项卡栏控制器的视图控制器,并且该选项卡栏控制器是'libraryView'的子视图)中关闭'libraryView'。我试过你的代码,但它没有按我想要的方式工作。 再次感谢您的代码。 – 2012-07-29 09:25:23

+0

最后,我做到了。我不再使用Interface Builder,并以编程方式创建Tab Bar Controller,View Controller。现在代表工作正常。 – 2012-07-29 10:27:30