Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/358.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 为什么控制器';s类方法是';当应用程序从后台变为活动状态时,是否无法调用?_Ios_Background_Viewdidload_Viewdidappear - Fatal编程技术网

Ios 为什么控制器';s类方法是';当应用程序从后台变为活动状态时,是否无法调用?

Ios 为什么控制器';s类方法是';当应用程序从后台变为活动状态时,是否无法调用?,ios,background,viewdidload,viewdidappear,Ios,Background,Viewdidload,Viewdidappear,当我与我的应用程序共享某个内容时,它会被 -(BOOL)application:(UIApplication*)application openURL:(NSURL*)url sourceApplication:(NSString*)sourceApplication annotation:(id)annotation{获取与之共享的内容。之后,我需要在应用程序的第一个控制器中以模式呈现内容,但如果从appDelegate调用函数[self.library showContent:项目];whe

当我与我的应用程序共享某个内容时,它会被
-(BOOL)application:(UIApplication*)application openURL:(NSURL*)url sourceApplication:(NSString*)sourceApplication annotation:(id)annotation{
获取与之共享的内容。之后,我需要在应用程序的第一个控制器中以模式呈现内容,但如果从
appDelegate
调用函数
[self.library showContent:项目];
where's library是应用程序上的主控制器,它不会调用主控制器的类方法,如
viewdiload
viewdideapp
,而只调用
appDelegate
中的
applicationIDbecomeactive
,我无法从
showContent运行
presentModalViewController
e> 方法,因为它的视图尚未显示在屏幕上


简短版本:为什么当应用程序来自
applicationIDbecomeactive
时,它不会调用第一个控制器的类方法,如
viewdisbeen
?如果我不知道主控制器何时在屏幕上,当应用程序从e background当它被放在后台时,它会以它前面的视图打开。要在使用url方案与应用程序共享某些内容时显示视图控制器,您必须在handle open url方法中告诉应用程序这样做:

- (BOOL)application:(UIApplication *)application
            openURL:(NSURL *)url
  sourceApplication:(NSString *)sourceApplication
         annotation:(id)annotation{
         /* put code to get the data you want to extract
         from the url scheme here */
         // and then load the view
         MyController *v = [[MyController alloc] init]; 
         [self loadThisController:v];//replace with any method you want to use to load this.
}

我认为如果把
UIViewController
生命周期和应用程序生命周期混为一谈,这两个生命周期是不同的


简要提示:将您的代码从
ViewDidAppear
取出到外部方法,并尝试在
applicationIDbecomeactive
的某个位置调用此方法

有关应用程序生命周期,请参阅链接

有关
UIViewController
lifecycle的信息,请参阅链接


希望这能有所帮助。

我知道,但我不想用新控制器替换旧控制器。新控制器必须是旧控制器中的模态控制器,所以我需要完成加载旧控制器并在其中加载一个presentModalViewController。@Nikos M。我想你的回答误导了我。当你重新加载viewController时,你会处理一些副作用,即您不一定需要网络调用、I/O等功能。“简要提示:将您的代码从ViewDidApparOut转换为外部方法,并尝试从ApplicationIDBecMeactive的某个位置调用此方法。”好的,但我需要知道,当我调用此函数时,我的控制器(旧的控制器)是的,但如果我尝试在日志中实例化presentmodalview,我会看到“谁的视图不在窗口层次结构中!”