【问题标题】:How to call different Storyboards via Swift for iOS?如何通过 Swift for iOS 调用不同的 Storyboard?
【发布时间】:2014-09-10 11:52:48
【问题描述】:

我为每个 iOS 设备系列创建了一个包含三个不同故事板的应用。现在我不知道应用启动时如何选择合适的 Storyboard?我正在检查屏幕高度以识别不同的设备:

func application(application: UIApplication!, didFinishLaunchingWithOptions launchOptions: NSDictionary!) -> Bool {
    // Check Device Family
    var bounds: CGRect = UIScreen.mainScreen().bounds
    var screenHeight: NSNumber = bounds.size.height
    var deviceFamily: String
    if screenHeight == 480 {
        deviceFamily = "iPhoneOriginal"
        // Load Storyboard with name: iPhone4
    } else if screenHeight == 568 {
        deviceFamily = "iPhone5Higher"
        // Load Storyboard with name: iPhone5
    } else {
        deviceFamily = "iPad"
        // Load Storyboard with name: iPad
    }

    return true
}

有人可以在 Swift 中给我一个可行的解决方案吗?我只找到了 ObjC 的解决方案。

谢谢。

【问题讨论】:

    标签: ios storyboard swift


    【解决方案1】:

    我猜你想打开一个视图?如果是这样,这段代码就可以完成这项工作:

    var mainView: UIStoryboard!
    mainView = UIStoryboard(name: "vcLogin", bundle: nil)
    let viewcontroller : UIViewController = mainView.instantiateViewControllerWithIdentifier("iPhone5") as UIViewController
    self.window!.rootViewController = viewcontroller
    

    它会打开 id:yourViewControllerId 的视图控制器

    你需要给你的视图控制器一个标识符。 您可以通过突出显示您的视图控制器然后给它一个标识符来做到这一点: 然后将您的标识符放入 StoryBoard ID 中。

    所以对你来说它将是:

    if screenHeight == 480 {
      deviceFamily = "iPhoneOriginal"
      // Load Storyboard with name: iPhone4
      var mainView: UIStoryboard!
      mainView = UIStoryboard(name: "vcLogin", bundle: nil)
      let viewcontroller : UIViewController = mainView.instantiateViewControllerWithIdentifier("iPhone4") as UIViewController
      self.window!.rootViewController = viewcontroller
    }
    

    【讨论】:

    • 嗨!感谢您的回答;)但这并不是我真正要寻找的。我创建了 3 个不同的 Storybaord 文件。现在我想在应用程序启动时根据屏幕高度加载一个完全不同的 Storyboard 文件......?!我尝试了您的解决方案,但出现了一些错误:i.minus.com/jKYZ16oT4aUTd.png
    • 这是否意味着(使用您的解决方案)我需要将所有视图等放在一个情节提要中(来自 iPad 和 iPhone ...)并根据其 ID 调用第一个视图?
    • 是的!我以为你有 1 个故事板,里面有 3 个不同的 ViewController。
    • 这是我正在寻找的,但在 Swift 中:link
    • 别忘了关闭之前的rootViewController
    猜你喜欢
    • 1970-01-01
    • 2015-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多