UIAlertView 显示方法与新的 UIAlertController 对象等效吗?

Posted

技术标签:

【中文标题】UIAlertView 显示方法与新的 UIAlertController 对象等效吗?【英文标题】:UIAlertView show method equivalent with new UIAlertController object? 【发布时间】:2014-10-22 08:27:00 【问题描述】:

所以我当前的应用程序在一些地方使用 UIAlertView,并且在更新到 ios 8 后,我看到文档中的注释曾经说过 UIAlertView(和 UIActionSheet)自 iOS 8 以来已被弃用并被 UIAlertController 取代。我将它添加到我的待办事项列表中,并且刚刚开始着手重构我的代码以使用新的 UIAlertController 类。

我可以看到 UIAlertController 是如何工作的,尽管我还剩下一些 UIAlertView 的用例,我似乎不太容易用 UIAlertController 替换它们。这一切都源于这样一个事实,即 [UIAlertView show] 可以调用以显示 alertView,而 UIAlertController 必须使用 presentViewController 方法从另一个 viewController 呈现。问题是我有许多调用来创建警报视图,这些调用来自未直接链接到特定 viewController 的代码,我将不得不重构并通过 viewController 参数传递给每个调用点才能使用 UIAlertControllers .在我这样做之前,我想知道是否有人知道一种很好的方法来恢复在不知道合适的 ViewController 的情况下仅显示 UIAlertController 的能力。有没有办法从某物获取“当前视图控制器”?

我还实现了一个调试警报视图宏,它允许我在警报视图中放置错误消息,这些显然可以从任何地方调用,并且与提供警报视图的实际应用程序功能不同,我真的不想在整个过程中重构 ViewController我所有的代码只是为了使用它们。

有点令人沮丧的是,在弃用某些系统时,他们没有提供允许以与原始功能相同的方式使用替换系统的功能。

任何帮助表示赞赏!

【问题讨论】:

UIAlertView show() behavior for UIAlertController的可能重复 【参考方案1】:

最后我解决了这个问题,让我的所有视图控制器在它们将出现时注册为当前视图控制器。然后,每当我需要显示警报时,我手头就有一个 viewController 来显示警报。

如果在视图转换时的尴尬时间需要警报,这并不理想,并且可能在逻辑上存在一些漏洞,但它似乎有效并且没有那么混乱。

对 API 的这一方面刚刚被删除感到沮丧。

【讨论】:

***.com/questions/26419458/… 可能是更合适的解决方案。 谢谢,这真的很有趣。下次我看代码的这个区域时,我会看一下。干杯!

以上是关于UIAlertView 显示方法与新的 UIAlertController 对象等效吗?的主要内容,如果未能解决你的问题,请参考以下文章

UIAlertView 按钮显示 viewController

Runnable::new 与新的 Runnable()

Promise.resolve 与新的 Promise(resolve)

UIPickerView 与新的 UITableViewController

Highcharts - redraw() 与新的 Highcharts.chart

iPhone : 应用内购买必须与新的应用版本一起提交