Mat*_*att 20 iphone objective-c ios ios8
我正在使用新的iOS 8 UISplitViewController.如果我在iPhone上运行它我有以下问题:
我的主视图控制器触发要显示的详细视图控制器.详细视图控制器在详细视图中将新视图控制器推送到UINavigationController堆栈.
现在我有问题,如果我想从新的视图控制器回弹到主视图控制器.
我怎样才能做到这一点
[self.navigatonController popToRootViewControllerAnimated:YES];
Run Code Online (Sandbox Code Playgroud)
不起作用.我想在iPhone上显示主视图控制器.所以我必须回顾两个观点.
我有什么想法可以做到这一点?
Jim*_*des 34
UIViewControllers有一个"splitViewController"属性,所以你可以通过它获得对相应导航控制器的引用 - 然后调用popViewControllerAnimated.
这是在Swift中(包含在详细视图控制器中的某个地方):
if let navController = splitViewController?.viewControllers[0] as? UINavigationController {
navController.popViewControllerAnimated(true)
}
Run Code Online (Sandbox Code Playgroud)
我刚刚在Apple开发者论坛上找到了一个解决方案: 如何在iPhone上的UISplitViewController中手动"弹出"回MasterViewController
旧的(可能仍然有效)建议是让主视图启动'pop'.为了做到这一点,详细视图需要通知主视图有关按下自定义按钮的信息.这可以通过定义一个来实现.协议,其中主视图是委托,详细视图有一个名为'委托'的变量.当主控推送详细视图时,它将此委托变量设置为self.现在详细视图有一个钩子来通知主视图.
这意味着从(子)详细视图控制器调用主视图控制器方法:
(子)细节视图控制器:
UINavigationController *navCon = [self.splitViewController.viewControllers objectAtIndex:0];
MyPrimaryViewController *primary = [navCon.viewControllers objectAtIndex:0];
[primary popToMaster];
Run Code Online (Sandbox Code Playgroud)
主视图控制器:
- (void)popToMaster
{
[self.navigationController popViewControllerAnimated:YES];
}
Run Code Online (Sandbox Code Playgroud)
我有完全相同的问题!据我了解,splitViewController“看起来”像iPhone上的navigationController(“折叠”splitVC),但detailVC实际上不再与masterVC位于同一导航堆栈上。这就是为什么您的“popToRootViewController”消息不再起作用的原因。
暂时我还没有找到办法。如果我找到解决方案,我会告诉你。
归档时间: |
|
查看次数: |
4836 次 |
最近记录: |