SFF*_*SFF 11 iphone objective-c uisplitviewcontroller ios
从iOS8开始,我们可以在紧凑型和常规设备上使用UISplitViewController.这很棒,因为我不需要为iPhone和iPad创建两个不同的故事板,但是我遇到了一个问题.
如果拆分视图控制器在iPad上(如果折叠属性为NO),我可以简单地调用它来显示左侧的MasterVC.
self.splitViewController.preferredDisplayMode = UISplitViewControllerDisplayModePrimaryOverlay;
[self.splitViewController.displayModeButtonItem action];
Run Code Online (Sandbox Code Playgroud)
但如果它在iPhone上(如果折叠属性为YES),则忽略displayMode,并且不执行任何操作.
我无法弹出DetailVC,popToRootViewControllerAnimated
因为DetailVC拥有自己的导航控制器.
如果没有像dismissViewControllerAnimated:completion:
showDetail 一样的视图控制器的方法,Apple如何期望我们在折叠模式下的代码中显示MasterVC(关闭DetailVC)?我们将不胜感激.谢谢
pNr*_*Nre 21
在不支持"拆分"模式的设备上,如果
你想展示的主视图控制器代替的细节时UISplitViewController
首先加载,然后回到YES
你的委托类(UISplitViewControllerDelegate
)splitViewController:collapseSecondaryViewController:ontoPrimaryViewController:
方法的方法应该这样做:
- (BOOL)splitViewController:(UISplitViewController *)splitViewController collapseSecondaryViewController:(UIViewController *)secondaryViewController ontoPrimaryViewController:(UIViewController *)primaryViewController {
return YES;
}
Run Code Online (Sandbox Code Playgroud)您希望在特定事件(例如,按下按钮)之后将详细视图控制器关闭回主控制器.在这种情况下,您必须弹出详细视图控制器导航控制器:
[detailViewController.navigationController.navigationController popToRootViewControllerAnimated:YES]
Run Code Online (Sandbox Code Playgroud)今天有一个类似的问题试图从拆分视图控制器中的详细视图弹回.
虽然我确信接受的答案工作正常,但我发现另一种方法也可以使用,并且可能更清洁一点就是使用展开的segue.
我在我想要返回的主视图上设置了一个展开segue,然后从我想要弹出的视图中创建了一个指向展开segue的segue链接(注意:假设您正在使用故事板).
确保在弹出的目标视图上设置IBAction:
-(IBAction)prepareForUnwind:(UIStoryboardSegue *)segue { }
Run Code Online (Sandbox Code Playgroud)
将出口连接到故事板中的segue以进行展开segue.对不起,我没有提供很多关于如何设置unwind segue的细节,但是有很多教程可供选择.
然后在你想要解除的控制器上,将一个segue连接到你弹出的控制器的展开segue.一定要命名segue.
然后在要关闭的视图控制器中的按钮触摸,只需调用
[self performSegueWithIdentifier:@"unwindSegueName" sender:self];
Run Code Online (Sandbox Code Playgroud)
这非常有效,可以避免向后挖掘可能会发生变化的导航层次结构.
希望这对某人有用!节日快乐!
归档时间: |
|
查看次数: |
9684 次 |
最近记录: |