我有一个支持 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/