(Xcode6-beta3、Swift、iPad、iOS8)
如何使用 Split View Controller 为 iPad 应用程序创建启动页面?
我已经尝试了将小箭头拖放到新 View Controller 的直接方法,并设置了一个按钮以在内部触摸时继续到 Split View Controller 。这会引发内存错误
我也试过简单地从 AppDelegate
中的 application
函数中注释掉以下代码,但我得到了一个
*** 由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“无效参数不满足:[标识符长度] > 0”
func application(application: UIApplication!, didFinishLaunchingWithOptions launchOptions: NSDictionary!) -> Bool {
// Override point for customization after application launch.
// let splitViewController = self.window!.rootViewController as UISplitViewController
// let navigationController = splitViewController.viewControllers[splitViewController.viewControllers.count-1] as UINavigationController
// splitViewController.delegate = navigationController.topViewController as DetailViewController
return true
}
我什至断开了 Storyboard 中的 Master-Detail View ,因此所有应该加载的只是初始页面,但它仍然崩溃。
我太难了!感谢您的帮助。
最佳答案
您遇到的问题与 application:didFinishLaunchingWithOptions 中的代码有关:
在该代码中,模板访问 Storyboard 中定义的“第一个” View Controller 以获取 Split View Controller 并设置其委托(delegate)属性。如果您更改“小箭头”,您正在更改 UIWindow 的 rootViewController 属性,并且属于不同的 View Controller ,它会崩溃。
要解决这个问题,最好的办法是:
- 按照描述创建 Storyboard(普通 ViewController 与原始 Split VC 的 segue)
- 注释掉 application:didFinishLaunchingWithOptions 中的代码
- 为新添加的场景创建一个 UIView Controller 子类
在那个类中,在 segue 完成之前,插入这个修改后的代码版本来设置 Split View Controller 的委托(delegate)属性:
let splitViewController = segue.destinationViewController as UISplitViewController let navigationController = splitViewController.viewControllers[splitViewController.viewControllers.count-1] as UINavigationController splitViewController.delegate = navigationController.topViewController as DetailViewController
工作项目 here
关于authentication - 如何为 Split View Controller 创建启动页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24806557/