注册通知时如何从存在的 UIAlertcontroller 获取 UIAlertAction

Posted

技术标签:

【中文标题】注册通知时如何从存在的 UIAlertcontroller 获取 UIAlertAction【英文标题】:How to get a UIAlertAction from UIAlertcontroller presented when registeringForNotifications 【发布时间】:2017-02-10 04:13:03 【问题描述】:

我想根据用户是否允许/不注册通知来对视图控制器进行一些切换。这个视图第一次加载和

appDelegate.registerForNotifications(UIApplication.sharedApplication())

在 ViewDidLoad 中调用,显示 AlertController 并且 viewController 按预期完成其布局,因此缺少对用户是否允许/不允许通知的任何依赖。

我知道我可以在应用程序启动后立即显示注册警报,但我想等待在此视图控制器中请求许可,因为它仅与此视图相关,而不与之前的其他视图相关。

在调用 viewWillAppear 之前有什么方法可以捕获 UIAlertAction 吗?

【问题讨论】:

不确定你想做什么,但我认为马特回答的最后一行是关键。如果您正在尝试创建登录页面,我建议您查看here 【参考方案1】:

在调用 viewWillAppear 之前有什么方法可以捕获 UIAlertAction 吗?

没有,也不应该有。 viewDidLoadviewWillAppear 等之前,您不会做任何事情。您在这些方法中的工作是根据需要做出响应(例如,通过进行初始化),然后尽可能快地让开。您不得以任何方式延迟视图控制器的出现。

相反,重新考虑您的架构。

视图控制器的视图将会出现。所以就让它吧!如果您担心,例如,如果用户不允许注册,则不应启用按钮,则从禁用按钮开始,仅在您知道(或在警报操作的处理程序中了解)现在允许后启用它。

或者,如果此视图控制器完全依赖于允许注册的用户,请将注册移到应用程序的早期阶段,甚至不允许用户在没有它的情况下来到这里!

【讨论】:

以上是关于注册通知时如何从存在的 UIAlertcontroller 获取 UIAlertAction的主要内容,如果未能解决你的问题,请参考以下文章

如何从解析中注册通知以获取声音和警报? (在斯威夫特)

如何从英特尔 XDK 中删除推送 API?

如何注册通知类别?

如何配置 azure 应用以在从应用中删除用户时发送通知

在 iOS 8 中注册推送通知时如何访问 deviceToken?

将通知模板从应用后端注册到 Azure 通知中心