当我与我的应用程序分享内容时,它会被调用
-(BOOL) application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation{
获取与其共享的内容。之后,我需要在应用程序的第一个控制器中呈现Modally内容,但是如果从appDelegate
调用函数[self.library showContent:item];
,其中库是应用程序的主控制器,则不会调用主控制器的viewDidLoad
或viewDidAppear
等类方法,但applicationDidBecomeActive
只有appDelegate
,我无法从{presentModalViewController
运行showContent
1}}方法,因为它的视图还不在屏幕上。
简短版本:为什么当应用来自applicationDidBecomeActive
时,它不会调用第一个控制器的类方法,如viewDidAppear
?如果我不知道主控制器何时出现在屏幕上,如何在主控制器中调用presentModalViewController
?
答案 0 :(得分:1)
我认为,混合UIViewController
生命周期和应用程序生命周期,这两者是不同的。
简要提示:将您的代码从ViewDidAppear
输出到外部方法,并尝试在applicationDidBecomeActive
的某处调用此方法。
有关应用程序生命周期,请参阅this链接。
对于UIViewController
生命周期,请参阅this链接。
希望可以提供帮助。
答案 1 :(得分:0)
当应用程序从后台变为活动状态时,它会在前面放置的视图中打开,当它放在后台时。要在使用网址方案与您的应用分享内容时显示视图控制器,您必须告诉您的应用在您的手柄打开网址方法中执行此操作:
- (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.
}