我已经在我的应用程序中实现了Spotlight搜索,一切正常,但是在某些情况下,我想要求知道应用程序是否从Spotlight搜索启动?请帮我如何知道这一点。

AppDelegate.m

- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void(^)(NSArray *restorableObjects))restorationHandler{
    self.isSportlight = YES;
    self.strSportlightUnitname = [userActivity.userInfo valueForKey:@"kCSSearchableItemActivityIdentifier"];
    return YES;
}

rootViewcontroller.m
- (void)viewDidLoad
{
   if(!appDel.isSportlight){
        [self OnLaunchSettings];
    }else{
         [self setupSportLightEvent];
    }
}

方面的结果是appDel.isSportlight = TRUE,但是appDel.isSportlight始终为FALSE,因为在“ViewDidLoad”之后调用了“continueUserActivity:(NSUserActivity *)userActivity restoreHandler”方法

最佳答案

根视图控制器不应使用应用程序委托进行签入,这种关系是错误的处理方式。应用程序委托应该告诉根视图控制器(如果其他控制器需要知道它,则可能会发布全局通知),以便它可以在任何时间响应,而不仅仅是在最初进行设置时。您需要编写代码,以便可以在不同状态之间切换。通常,这可以通过推入或添加/删除子视图控制器来完成,这样就可以分隔每种模式的功能。

关于ios - 如何从Spotlight搜索中启动该应用程序?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32990554/

10-14 21:53
查看更多