如何检测ViewController是否是从AppDelegate推送的?

时间:2013-11-18 21:09:25

标签: ios iphone uiviewcontroller appdelegate

在我的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
          }

2 个答案:

答案 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。