Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/101.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何从spotlight search启动应用程序?_Ios_Objective C_Iphone_Ios9 - Fatal编程技术网

Ios 如何从spotlight search启动应用程序?

Ios 如何从spotlight search启动应用程序?,ios,objective-c,iphone,ios9,Ios,Objective C,Iphone,Ios9,我已经在我的应用程序中实现了spotlight search,一切正常,但在某些情况下,我需要知道应用程序是否从spotlight search启动?请帮帮我,我怎么知道这个 AppDelegate.m - (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void(^)(NSArray *restorable

我已经在我的应用程序中实现了spotlight search,一切正常,但在某些情况下,我需要知道应用程序是否从spotlight search启动?请帮帮我,我怎么知道这个

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;
}
- (void)viewDidLoad
{
   if(!appDel.isSportlight){
        [self OnLaunchSettings];
    }else{
         [self setupSportLightEvent];
    }
}
rootViewcontroller.m

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

Aspected result为appDel.isSportlight=TRUE,但appDel.isSportlight始终为FALSE,因为在“ViewDidLoad”之后调用“continueUserActivity:(NSUserActivity*)userActivity restorationHandler”方法,根视图控制器不应与应用委托签入,这种关系是错误的。应用程序代理应该告诉根视图控制器(或者如果其他控制器需要知道,可能会发布一个全局通知),以便它可以在任何时候响应,而不仅仅是在初始设置时。您需要编写代码,以便可以在不同的状态之间切换。这通常是通过按下或添加/删除子视图控制器来完成的,这样您就可以划分每个模式的功能。

到目前为止您做了什么?你有时没有得到回调的详细信息吗?是的,我用“continueUserActivity restorationHandler”方法得到了回调的详细信息,但它是在rootviewcontroller viewDidLoad方法之后调用的。所以你需要更详细地解释你的问题并显示一些代码请看我编辑的问题,你是对的,但情况是,在我的应用程序中,还有一个功能“OnLaunch”和OnLaunch中的用户设置类别,现在的问题是,我必须在viewedid中检查这一点,通过spotlight加载用户启动,然后忽略OnLaunch设置并继续按用户搜索的类别。将其移出视图并加载,以便在需要时可以重用并重新运行它