针对iOS 7.1编程,并使用UIAlertView,这也适用于iOS 8.0吗?

时间:2014-10-17 18:17:30

标签: ios swift uialertview uialertcontroller

我使用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是一个问题

5 个答案:

答案 0 :(得分:4)

你应该这样做。只要它有效就没关系。

如果你的应用程序支持多个iOS版本并且某个API仅被弃用是一些应用程序支持的iOS版本,那么仅使用旧版API就没有问题(再次,假设它仍适用于较新的iOS)。

想一想 - 你有两个选择:

  1. 暂时只使用UIAlertView。它适用于你的应用程序支持iOS 7和8.有一天,也许明年,你决定放弃对iOS 7的支持。那时你可以用UIAlertView替换UIAlertController的所有用途。这是改变的一次性打击。
  2. 像其他答案一样更新您的代码。编写代码,检查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应用程序:

enter image description here

此用例可以受益于"删除"的红色破坏性按钮。命令,仅在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?