0

我正在使用 Swift 编写应用程序,并将 iOS 7.1 定位为最低版本,我注意到 UIAlertView 在 iOS 8 中已被弃用。

那么这是否意味着我应该只使用UIAlertView在我的应用程序中显示警报?

或者我应该使用一些代码来检查正在运行的 iOS 版本,并根据运行的 iOS 版本,对 iOS 8 使用UIAlertController,然后在运行 iOS 7 时使用UIAlertView ?

编辑:我应该补充一点,UIAlertView 确实适用于 iOS 7 和 8,但我只是想知道是否应该对两者都使用 JUST UIAlertView,或者如果它们在 iOS 8 上,则检查并运行 UIAlertController。我知道它使用新 API 的最佳实践,因为另一个已弃用,所以我很好奇在两者中使用 UIAlertView 是否有问题

4

5 回答 5

4

无论哪种方式,您都应该这样做。没关系,只要它有效。

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

这样想 - 你有两个选择:

  1. 暂时使用UIAlertView。它适用于您的应用同时支持 iOS 7 和 8。有一天,也许是明年,您决定放弃对 iOS 7 的支持。那时您可以UIAlertViewUIAlertController. 这是一次成功的改变。
  2. 像其他答案一样更新您的代码。编写现在检查是否UIAlertController可用的代码。如果是则使用,否则使用UIAlertView. 然后明年你放弃对 iOS 7 的支持,然后更新所有现有代码以删除检查UIAlertController并删除要使用的代码UIAlertView。因此,您现在添加大量代码,然后进行大量更改。这是选项 1 工作量的两倍,没有任何收益。
于 2014-10-17T18:41:42.473 回答
1

您应该尽可能使用新的 API,因为不推荐使用的方法最终可能不可用和/或不会产生您可能期望的结果。您应该检查一下UIAlertController在运行时是否可用,然后尽可能使用它。

于 2014-10-17T18:23:48.013 回答
1

您应该考虑应用程序的独特要求。在大多数情况下,我同意 rmaddy。在您的应用程序中弃用 iOS 7 支持之前,您应该默认只使用。UIAlertView但是,请花一些时间考虑一下您当前的使用方式UIAlertView,以及您是否能够通过支持UIAlertController.

它们在功能上并不相同。例如,UIAlertController支持超过 2 个文本字段,以及带有破坏性按钮的警报(甚至超过 1 个)。

一个好地方的例子UIAlertController是 Facebook 应用程序,在取消帖子时:

在此处输入图像描述

此用例可以受益于“删除”命令的红色破坏性按钮,该按钮仅在 iOS 8 中可用。如果您正在使用UIAlertView类似的东西,请考虑UIAlertController在 iOS 8 上使用。

于 2014-10-17T19:14:05.363 回答
0

我强烈建议您使用 iOS API 的所有新功能。

要检测是否可以运行旧警报屏幕,请使用以下代码片段:

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
        }
}
于 2014-10-17T18:25:26.527 回答
0

我倾向于同意 rmaddy。我面临同样的问题,唯一的区别是它是一个现有的应用程序,我现在准备好支持 iOS8。我发现 UIAlertView 在 iOS8 中与前言不完全兼容 - 请参阅我的 SO 问题:iOS8 中的 UIAlertView 自动换行符消失了吗?

于 2014-10-22T12:24:53.707 回答