我使用Swift编写应用程序,并将iOS 7.1作为最低版本,我注意到UIAlertView在iOS 8中已弃用。
这是否意味着我应该只使用 UIAlertView 在我的应用中显示提醒?
或者我应该使用一些代码来检查正在运行的iOS版本,并根据运行的iOS版本,对iOS 8使用 UIAlertController ,然后使用 UIAlertView 如果他们正在运行iOS 7?
编辑:我应该补充说,UIAlertView在iOS 7和8上都有效,但我只是想知道我是否应该使用JUST UIAlertView,或者检查并运行UIAlertController,如果他们在iOS上8.我知道使用新API的最佳做法,因为另一个已被弃用,所以我很好奇是否只是在两者之间使用UIAlertView是一个问题
答案 0 :(得分:4)
你应该这样做。只要它有效就没关系。
如果你的应用程序支持多个iOS版本并且某个API仅被弃用是一些应用程序支持的iOS版本,那么仅使用旧版API就没有问题(再次,假设它仍适用于较新的iOS)。
想一想 - 你有两个选择:
UIAlertView
。它适用于你的应用程序支持iOS 7和8.有一天,也许明年,你决定放弃对iOS 7的支持。那时你可以用UIAlertView
替换UIAlertController
的所有用途。这是改变的一次性打击。UIAlertController
是否可用。如果是,请使用,否则使用UIAlertView
。然后,明年您将删除iOS 7支持,然后更新所有现有代码以删除对UIAlertController
的检查并删除使用UIAlertView
的代码。因此,您现在可以添加大量代码,稍后进行一系列更改。这是选项1的两倍没有收获的工作。答案 1 :(得分:1)
您应该尽可能使用新的API,因为弃用的方法最终可能不可用和/或不会产生您可能期望的结果。您应该检查运行时是否有UIAlertController
可用,然后尽可能使用它。
答案 2 :(得分:1)
您应该考虑应用的独特要求。在大多数情况下,我同意rmaddy。您应该默认只使用UIAlertView
,直到您在应用中弃用iOS 7支持。但是,请花点时间考虑一下您当前使用UIAlertView
的方式以及是否能够通过支持UIAlertController
为iOS 8用户提供更好的体验。
他们的功能并不相同。例如,UIAlertController
支持超过2个文本字段,以及具有破坏性按钮的警报(甚至超过1个)。
UIAlertController
的好地方的一个例子是取消帖子的Facebook应用程序:
此用例可以受益于"删除"的红色破坏性按钮。命令,仅在iOS 8中可用。如果你正在使用UIAlertView
这样的话,请考虑在iOS 8上使用UIAlertController
。
答案 3 :(得分:0)
我强烈建议您使用iOS API的所有新功能。
要检测是否可以运行旧警报屏幕,请使用此代码snipet:
if let gotModernAlert: AnyClass = NSClassFromString("UIAlertController") {
println("UIAlertController can be instantiated")
//make and use a UIAlertController
}
else {
println("UIAlertController can NOT be instantiated")
//make and use a UIAlertView
}
}
答案 4 :(得分:0)
我倾向于同意rmaddy。我遇到了同样的问题,唯一的区别是它是一个现有的应用程序,我现在正准备也支持iOS8。我发现UIAlertView在iOS8中并不完全兼容 - 请参阅我的问题:UIAlertView automatic newline gone in iOS8?