2016-08-24 75 views
0

我为iPhone开发了一个应用程序,我想在iPad中继续此应用程序,iPad的界面与iPhone不一样,我正在开发界面以供iPad和我有一个问题,将uiviewcontroller传递给另一个uiviewcontroller。pushViewController:在SWIFT中展开一个可选值时意外发现为零

我检测到该设备在功能func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool这样

if((modelName == "iPad 2")||(modelName == "iPad 3")||(modelName == "iPad 4")||(modelName == "iPad Air")||(modelName == "iPad Air 2")||(modelName == "iPad Mini")||(modelName == "iPad Mini 2")||(modelName == "iPad Mini 3")||(modelName == "iPad Mini 4")||(modelName == "iPad Pro")) 
    { 
     ... 
    }else 
    { 
     ... 
    } 

之后创建两个视图(视图A和图B)和余嵌入在两个导航控制器的两个视图。

在视图中,我添加以下代码通过查看B,

let secondViewController = self.storyboard!.instantiateViewControllerWithIdentifier("viewBID") as! ViewBViewController 

self.navigationController!.pushViewController(secondViewController, animated: true) 

我做同样的事情在iPhone和它运作良好,但为iPad,我跳投得到错误,如unexpectedly found nil while unwrapping an Optional value

我不知道为什么,我在视图控制器中嵌入了导航控制器,所以我认为self.navigationController不为空。你知道如何解决这个问题吗?非常感谢你。 PS:我想也许我没有使用正确的方法来分离iPhone和iPad界面,但我不确定这一点......我需要你的帮助,非常感谢。 enter image description here

+0

我自己并不是Swift专家,但我很好奇你为什么不使用AutoLayout而不是为不同的屏幕设计不同的界面? :) https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/AutolayoutPG/ –

+0

因为两个接口差别很大 – Coucou

+0

请显示更多代码 –

回答

0

尝试使用大小类别。您不必使用您的代码来检测设备。使用大小类,你可以有不同的iPads界面,纵向的iPhone和横向的iPhone,或iPhone 6s plus。

大小班在Xcode小于8个看起来像这样here to select them

,在这里你选择你的设备。

and then select device

我建议下载Xcode中8的测试版,因为他们是有点在Xcode 8不同,但相同的原则。

您可以搜索一些关于Xcode中大小类的教程。

+0

或者看看苹果开发者:https:// developer.apple.com/library/prerelease/content/documentation/UserExperience/Conceptual/AutolayoutPG/Size-ClassSpecificLayout.html – Phyber

相关问题