Asy*_*nc- 10 ipad uisplitviewcontroller ios swift swift2
我有一个拆分视图控制器,左侧有一个项目列表,右侧有一个详细视图.AppDelegate中的相关代码:
let splitViewController = mainView.instantiateViewControllerWithIdentifier("initial") as! UISplitViewController
let rightNavController = splitViewController.viewControllers.last as! UINavigationController
let detailViewController = rightNavController.topViewController as! DetailsIpad
let leftNavController = splitViewController.viewControllers.first as! UINavigationController
let masterViewController = leftNavController.topViewController as! MainViewController
masterSplitViewController = masterViewController
detailSplitViewController = detailViewController
// Override point for customization after application launch.
let navigationController = splitViewController.viewControllers[splitViewController.viewControllers.count-1] as! UINavigationController
navigationController.topViewController!.navigationItem.leftBarButtonItem = splitViewController.displayModeButtonItem()
splitViewController.delegate = self
self.window!.rootViewController = splitViewController
Run Code Online (Sandbox Code Playgroud)
当我第一次启动应用程序时,我发现拆分屏幕的右侧部分占用了所有屏幕:
如果我旋转屏幕,它会被正确设置(可能因为两个视图都出现在屏幕上):
当我在任何地方设置断点时,我看到右侧的详细视图在左侧的主视图(项目列表)之前加载,尽管没有直接调用.我无法更改分屏的视图的调用顺序.我怎样才能解决这个问题?
更新:
我可以在显示拆分视图控制器之前设置它:
splitViewController.preferredDisplayMode = UISplitViewControllerDisplayMode.AllVisible
Run Code Online (Sandbox Code Playgroud)
在我打印时,在分割控制器的ViewDidLoad中:
print(self.preferredDisplayMode.rawValue)
Run Code Online (Sandbox Code Playgroud)
我得到:2,这是AllVisible.但结果仍然相同.
感谢@Tarun Tyagi 的解释,但就我而言,建议的操作不起作用。然而,这对我有用:在 SplitViewController 中我添加了对 setNeedsLayout() 的调用:
override func viewDidAppear(animated: Bool) {
self.view.setNeedsLayout()
}
Run Code Online (Sandbox Code Playgroud)
当视图已经在屏幕上时,这将使视图刷新。
| 归档时间: |
|
| 查看次数: |
799 次 |
| 最近记录: |