swift – 由于spash屏幕或错误的控制器处于活动状态,避免丢失小部件发送的通知

前端之家收集整理的这篇文章主要介绍了swift – 由于spash屏幕或错误的控制器处于活动状态,避免丢失小部件发送的通知前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个小部件通过NSURL和extensionContext调用其相应的应用程序来激活应用程序中的特定操作.

在AppDelegate的应用程序中:openURL:options:方法我有:

func application(app: UIApplication,openURL url: NSURL,options: [String : AnyObject]) -> Bool {
    if let path = url.path{
        if path.containsString("action"){
          NSNotificationCenter.defaultCenter().postNotificationName(MyViewController.purchasmyActionKey,object: nil)
        }
    }
    return true
}

当应用程序打开并且MyViewController处于活动状态时,操作将完美执行.但是,如果我在应用程序中的另一个视图控制器上或应用程序已关闭,则不会执行该操作.

有人能让我走上正轨吗?

注意:我的主控制器是一个带有各种子视图控制器的UITabBarController.一些是UINavigationControllers(包含网格控制器),另一个是ListViewController.

最简单的选项是显示视图控制器,它将其作为模式控制器上的模态处理.这通常是最不复杂和最干净的,因为用户可以在完成此交互之前轻松返回到他们正在做的事情.

如果由于某种原因你不能这样做:

您需要指定某个类负责确保显示正确的视图控制器并告知在看到通知时操作请求.这可以是直接的app委托,标签栏控制器或您创建的一些其他特定类,并提供对标签控制器的引用.

它的工作是检查选项卡控制器的状态并在需要时显示正确的视图控制器,然后告诉该视图控制器开始某些操作.

拥有此逻辑的此类可以是观察您的通知的类,或者您可以直接传递消息,因为您的应用程序委托可能知道该实例或正在创建新实例.

猜你在找的Swift相关文章