即使用户没有点击通知,如何显示特定的视图控制器

时间:2017-07-13 04:11:22

标签: ios objective-c

我有2个ViewControllers会根据本地通知弹出。当用户直接点击应用程序图标而不是通知时,如何显示这些ViewControllers?

有没有办法打电话

 - (void)application:(UIApplication *)application
didReceiveLocalNotification:(UILocalNotification *)notification

- (void)applicationDidBecomeActive:(UIApplication *)application 

2 个答案:

答案 0 :(得分:0)

您可以直接通过引用您的app委托并为其提供这些参数来调用该方法(您必须创建一个虚拟的UILocalNotification)。

然而,这很奇怪。

你应该做的是正确地将显示视图控制器的代码分离到它自己的函数中。然后,您可以使用上面指定的任一方法调用此函数。

答案 1 :(得分:0)

无论您在何处安排本地通知,都要向NSUserDefaults添加一个指定要加载哪个VC的密钥。

UserDefaults.standard.setValue("name_of_vc_to_load", forKey: "vcToLoad")
UserDefaults.standard.synchronize()

最后在

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {

并在

func applicationDidBecomeActive(_ application: UIApplication) {

检查要加载的VC是否可用并相应地加载VC。

if let vcName : String = UserDefaults.standard.value(forKey: "vcToLoad") as? String {
        switch vcName {
        case "VCA" : 
            //load VCA
            break
        default:
            //load VCB
            break
        }
    }

您可以通过rootVC呈现您选择的VC,也可以替换rootVC本身。