Swift 中多个 UIViewContoller 中的 NSNotification 处理
Posted
技术标签:
【中文标题】Swift 中多个 UIViewContoller 中的 NSNotification 处理【英文标题】:NSNotification handling in multiple UIViewContoller in Swift 【发布时间】:2015-09-10 08:50:25 【问题描述】:我有几个UIViewController's
子类。每个班级都有网络调用,所有这些网络调用都在单独的班级中处理,每当我收到失败作为响应而不是对每个班级的交付失败响应时,我想通过发布来自我的网络班级的通知来显示警报。我的所有警报都会显示查看UIViewController
的扩展名。
有没有办法在我的扩展中为通知添加观察者,以便我可以从我的网络类发布通知,并使用此 UIViewController's
扩展显示警报,而不是在我的每个 UIViewController
中添加/删除观察者。
【问题讨论】:
只是在发生故障时不发布通知并显示来自您的网络类的警报? 我只是不想在我的模型/网络类中收到警报。 【参考方案1】:如果您只想显示警报,可以通过从网络类而不是通知中显示它来实现。
如果您有一些特定的功能要为每个 UIViewController 在失败的情况下创建一个父控制器(UIViewController 的子类)并从父类继承所有 UIViewController 并在父控制器中实现所有通知工作,即使您想要任何特定于控制器的功能,您也可以覆盖父类方法。
【讨论】:
【参考方案2】:-
如果您的意图只是显示错误警报,那么我建议将 AppDelegate 添加为通知侦听器,然后在通知触发时显示警报。
我个人会推荐用于网络的完成块
使代码可扩展且易于调试。
还有另一种创建 UIViewController 子类的方法
(例如CustomVC)并将其注册为空的通知
处理程序。然后创建所有视图控制器的子类
自定义VC。但是,您的每个视图控制器都必须
根据具体的VC实现handler并执行代码。
【讨论】:
我的类继承自 UITableViewController 和 UIViewController。我需要对我的许多类进行子类化,这需要更改代码我不喜欢在最后阶段这样做。我可以在现有 UIViewController 的扩展的帮助下做任何事情吗? 我已经列出了我所知道的所有选项。如果您有不同类型的 VC,那么我会建议我上述建议中的 #1 和 #2。以上是关于Swift 中多个 UIViewContoller 中的 NSNotification 处理的主要内容,如果未能解决你的问题,请参考以下文章
跨多个UIViewControllers的统一UICollectionView
Swift 中 NSFetchRequest 的多个 NSPredicates?
swift 在swift via option中使用结构中的多个类型