在我的AppDelegate中,如果用户输入我的自定义网址方案,我会提供一个ViewController。它的工作原理是我的ViewController。但是,我需要检测我的ViewController是否是从App委托推送的。这样做的最佳方法或行动方案是什么?我只想检测它是来自AppDelegate而不是其他地方。
- (BOOL)application:(UIApplication *)application
openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication
annotation:(id)annotation {
// attempt to extract a token from the url
ViewController *controller = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];
[self.navigationController pushViewController:controller animated:YES];
编辑:为了澄清我想要做的更好,当appdelegate呈现我的viewcontroller时,我需要能够在我的viewcontroller中检测它出现因为app delegate中的方法。有点像这样
ViewController
-(void) ViewDidLoad{
if (this controller was presented from App delegate){
do this
}
else{
do nothing
}
答案 0 :(得分:0)
这样做是这样的:
- (BOOL)application:(UIApplication *)application
openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication
annotation:(id)annotation {
ViewController *controller = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];
[self.navigationController pushViewController:controller animated:YES];
// here you know that your controller is pushed from the AppDelegate, then you can do other things just after the push
[controller callControllerPublicMethod];
}
当你在另一个控制器中推动它时,根本不做任何事情。
答案 1 :(得分:0)
为什么不在ViewController
中编写自己的自定义初始化方法,并且在从app delegate调用时将参数设置为true,并在其他任何地方将其设置为false。