如何为拆分视图控制器创建启动页面
Posted
技术标签:
【中文标题】如何为拆分视图控制器创建启动页面【英文标题】:How to create a splash page for a split view controller 【发布时间】:2014-07-17 14:39:34 【问题描述】:(Xcode6-beta3、Swift、iPad、ios8)
如何使用拆分视图控制器为 iPad 应用创建启动页面?
我尝试了直接的方法,将小箭头拖放到新的视图控制器,并设置一个按钮以在内部修饰时连接到拆分视图控制器。这会引发内存错误
我也试过简单地从AppDelegate
中的application
函数中注释掉以下代码,但我得到了一个
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Invalid parameter not satisfying: [identifier length] > 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 视图,因此应该加载的只是启动页面,但它仍然崩溃。
我被困住了!感谢您的帮助。
【问题讨论】:
刚刚使用单视图应用程序模板创建了一个新项目。添加了拆分视图控制器。将 segue 从按钮设置为拆分 VC。作品。我没有添加 VC 代码。你能分享你的项目吗? 好吧...你刚刚成为我的个人英雄。太感谢了。如果您想将此作为答案输入,我会将其标记为已接受:D 为了后代,我使用Master-Detail Application
模板创建了应用程序。然后我创建了一个新的视图控制器并将其插入到拆分视图控制器材料之前。这不起作用。
Here 是我处理这种情况的方法,希望对您有所帮助。
【参考方案1】:
您遇到的问题与 application:didFinishLaunchingWithOptions 中的代码有关:
在该代码中,模板访问 Storyboard 中定义的“第一个”视图控制器,以访问拆分视图控制器并设置其委托属性。如果您更改“小箭头”,您将更改 UIWindow 的 rootViewController 属性,并且属于不同的视图控制器,它会崩溃。
要解决这个问题,最好的方法是:
按照描述创建情节提要(普通 ViewController 与原始 Split VC 保持一致) 注释掉应用程序中的代码:didFinishLaunchingWithOptions 为新添加的场景创建一个 UIView 控制器子类在该类中,在 segue 完成之前,插入此修改版本的代码以设置拆分视图控制器的委托属性:
let splitViewController = segue.destinationViewController as UISplitViewController
let navigationController = splitViewController.viewControllers[splitViewController.viewControllers.count-1] as UINavigationController
splitViewController.delegate = navigationController.topViewController as DetailViewController
工作项目here
【讨论】:
以上是关于如何为拆分视图控制器创建启动页面的主要内容,如果未能解决你的问题,请参考以下文章