我的应用有一个主屏幕(mainView
)。在mainView
,我有一个按钮。当用户点击它时,我使用
[self presentViewController:libraryView animated:YES completion:nil]
显示另一个视图(libraryView
)。然后,在libraryView
上,我使用
[self.view addSubview:tabBarController.view]
添加UITabBarController
,其中包含2个视图控制器: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
,将其从标签控制器内的视图控制器(mainView
或featureBooks
)中删除并返回recentBooks
?
非常感谢。
答案 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