IOS Swift 处理全局事件

标签 ios swift cocoa-touch events

我如何处理由通知中心触发的全局事件,例如在我的 API 类中,如果收到错误响应,我会触发一个事件,例如(500)。当该事件被触发时, UIAlert 应该显示在任何事件的 View Controller 上,或者在注销时应该显示登录 View Controller 。

据我所知,没有简单的方法来获取当前 View Controller 以便与其交互。 (请注意,我的 Root View Controller 不是导航 Controller )。

最佳答案

另一种解决方案是子类化 UIViewController,无论您的 View Controller 是否嵌入 UINavigationController 中,它都可以工作。此类将处理接收发生错误的 NSNotification 并处理显示警报:

class MyViewController: UIViewController {
    override func viewWillAppear(animated: Bool) {
        super.viewWillAppear(animated)
        NSNotificationCenter.defaultCenter().addObserver(self,
                                             selector: "errorOccured",
                                             name: "ErrorNotification",
                                             object: nil)
    }

    override func viewWillDisappear(animated: Bool) {
        super.viewWillDisappear(animated)
        NSNotificationCenter.defaultCenter().removeObserver(self, name: "ErrorNotification", object: nil)
    }

    func errorOccured() {
        // Present an UIAlertViewController or the login screen.
    }
}

现在,任何在发布错误通知时应显示警报的 UIViewController 都必须是 MyViewController 的子类。只要确保在重写 viewWillAppearviewWillDisappear 时调用 super.viewWillAppearsuper.viewWillDisappear 即可。

关于IOS Swift 处理全局事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30618361/

相关文章:

ios - SceneKit 相机约束行为问题

ios - 如何使用动态 View iOS Swift 处理导航?

ios - Cocoapods 框架无法在另一个 Cocoapods 框架中找到文件

ios - iOS 8 之后,我可以继续使用 UIActionSheet 和 UIAlertView 吗?

objective-c - NSNumberFormatter,本地化的 setGroupingSeparator?

ios - 如何使用 SwiftUI 列表中的自定义 View 平滑扩展行单元格?

ios - 更新具有特定索引的元组数组

ios - 在 UIButton 中使用 UIBarButtonItem 图标

objective-c - 如何让用户在 iOS 中绘制重叠的颜色?

ios - 通知发出声音但不显示任何内容