UIAlertView show方法与新的UIAlertController对象等效?

时间:2014-10-22 08:27:00

标签: ios uiviewcontroller uialertview uialertcontroller

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

我可以看到UIAlertController的一切是如何工作的,虽然我留下了一些UIAlertView的用例,我似乎不能轻易地用UIAlertController取代它。这一切都源于[UIAlertView show]可以调用以显示alertView的事实,因为UIAlertController必须使用presentViewController方法从另一个viewController呈现。问题是我有很多调用来创建来自未直接链接到特定viewController的代码的alertViews,我将不得不重构并通过viewController参数传递给每个调用点以便能够使用UIAlertControllers 。在我这样做之前,我想知道是否有人知道一种很好的方法可以在不知道合适的ViewController的情况下恢复显示UIAlertController的能力。有没有办法从某些东西中获取“当前视图控制器”?

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

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

任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:0)

最后,我通过让所有viewControllers在WillAppear作为当前viewController时注册自己来解决这个问题。然后每当我需要提出警报时,我手头都有一个viewController来显示警报。

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

感到沮丧的是API的这个方面刚被删除。