如何从标签栏控制器中的视图控制器中关闭父视图?

时间:2012-07-29 08:52:28

标签: ios xcode uitabbarcontroller dismiss

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

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

显示另一个视图(libraryView)。然后,在libraryView上,我使用

[self.view addSubview:tabBarController.view]

添加UITabBarController,其中包含2个视图控制器:featuredBooksrecentBooks

一切正常。但是,当我向featureBooks添加按钮以关闭libraryView并返回mainView时,以下方法无法正常工作

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

我知道原因:self是指featureBooks的观点,而不是libraryView

那么,我如何引用libraryView,将其从标签控制器内的视图控制器(mainViewfeatureBooks)中删除并返回recentBooks

非常感谢。

1 个答案:

答案 0 :(得分:0)

创建libraryView的mainView委托对象...然后当你从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