我知道许多用户已经提出过这个问题,但我没有找到任何与我的问题相关的答案。
我正在使用UISplitViewController
,我的应用程序从登录页面开始,所以我在启动时隐藏了masterView
,在DetailViewController
一段时间后我显示了主人viewController
使用委托方法。
- (BOOL)splitViewController:(UISplitViewController *)svc shouldHideViewController:(UIViewController *)vc inOrientation:(UIInterfaceOrientation)orientation NS_AVAILABLE_IOS(5_0)
{
return hideMaster;
}
我已将hideMaster
初始化为NO
,DetailViewController
的ViewDidLoad()位于
ViewDidLoad(){
[self.splitViewController.view setNeedsLayout];
self.splitViewController.delegate =Nil;
self.splitViewController.delegate = self;
[self.splitViewController willRotateToInterfaceOrientation:[UIApplication sharedApplication].statusBarOrientation duration:0];
[super viewDidLoad];
}
它工作正常我的主人现在取消隐藏。但是在相同的detailViewController上,我有一个Back Button,我正在弹出当前的ViewController到最后一个viewController,我又想隐藏masterViewController,我的代码为后退按钮在下面。< / p>
- (IBAction)back:(id)sender {
hideMaster = NO;
self.splitViewController.delegate =Nil;
self.splitViewController.delegate = self;
[self.splitViewController willRotateToInterfaceOrientation:[UIApplication sharedApplication].statusBarOrientation duration:0];
[self.navigationController popViewControllerAnimated:NO];
}
它弹出CurrentViewController
到最后ViewController
但不隐藏masterViewController
请帮帮我。
答案 0 :(得分:2)
@ JohnD,我查看了你的代码。你在弹出最后一个View控制器的同时隐藏了主视图控制器,但是你导航到的viewController仍然显示了主视图控制器。因此你的masterView仍在那里。 / p>
按照以下步骤进行操作。
1.将delegate
的{{1}}加到最后一个单一View控制器ViewController上。
2.在最后一个ViewController(UINavigationController的委托)中实现以下委托方法。
UInavigationController
3.现在在下面给出的endViewController中实现UISplitViewController的委托方法。
- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated
{
[self.splitViewController.view setNeedsLayout];
self.splitViewController.delegate =Nil;
self.splitViewController.delegate = self;
[self.splitViewController willRotateToInterfaceOrientation:[UIApplication sharedApplication].statusBarOrientation duration:0];
}
4.现在改变你的 - (IBAction)回复:( id)发送方法与下一个。
- (BOOL)splitViewController:(UISplitViewController *)svc shouldHideViewController:(UIViewController *)vc inOrientation:(UIInterfaceOrientation)orientation NS_AVAILABLE_IOS(5_0)
{
return hideMaster;<<===============I'm assuming hide master as a variable of shared object(Singleton).
}
我希望这会有效,如果你卡在某个地方请告诉我。
答案 1 :(得分:1)
你正在你的应用程序中使用UISplitViewController,因为你有很多视图但整个应用程序没有使用UISplitViewController只使用它的一个视图。
最好使用另一种方法。