Storyboard的 Swift 2 API 可用性检查

标签 swift swift2 ios9

我有一个支持 iOS 8 的现有 iOS 应用程序。我只想为 iOS 9 添加新功能。

我为 iOS 9 创建了一个新的 Storyboard,它使用了 iOS 9 的功能,如 UIStackView。根据设备操作系统版本实例化适当的 Storyboard 文件。

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

    let storyboard: UIStoryboard
    if #available(iOS 9, *, *) {
        storyboard = UIStoryboard(name: "Main", bundle: nil)
    } else {
        storyboard = UIStoryboard(name: "MainOld", bundle: nil)
    }
    let mainViewController = storyboard.instantiateInitialViewController()
    window?.rootViewController = mainViewController
    window?.makeKeyAndVisible()
    return true
}

但是我在 Main.storyboard 上遇到编译错误“iOS 9.0 之前的 UIStackView”

我正在使用 Xcode 7 beta 5。

如何使用 Swift 2 在 iOS 8 支持的项目上使用 iOS 9 相关功能#availability check

最佳答案

我在 Apple Cocoa 开发人员电子邮件列表中收到了 Quincey Morris 的回复。

默认 Storyboard文件的文件检查器中的构建设置为“部署目标”,即 iOS 8,因此编译器会抛出错误。

如果我在使用 iOS 9 功能的 Storyboard上将“Build for”设置更改为 iOS 9。没有错误,应用程序在 iOS 8 和 iOS 9 中运行。

关于 Storyboard的 Swift 2 API 可用性检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32037315/

相关文章:

ios - 快速无效计时器不起作用

ios - NSCocoaErrorDomain 代码=3840

ios - 返回按钮隐藏在导航栏中(但仍然有效)

ios - 为什么我在 iOS 9 上的 WKWebView 中的音频流没有播放?

ios - 启动后立即添加 View 时出现 "Application windows are expected to have a root view controller"消息,仅限 iOS 9

ios - 在远处使用大型 3D 模型时避免 ARkit 和 SceneKit 中的纹理和阴影闪烁

ios - 未调用 UIPageViewController 的数据源方法

ios - 如何为 i386 和 x86_64 架构构建 Cocoa Touch Framework?

swift - 如何编辑快速错误断点?

ios - 如何删除我的应用程序 ios swift 中存储的数据?