我有一个自定义URL方案,我想打开某个ViewController,但当我转到该URL时,它不是根目录。我已经能够做到这一点,剩下的就是将ViewControllernavigationController推送到AppDelegate中,在那里我像这样处理我的网址:

- (BOOL)application:(UIApplication *)application
     openURL:(NSURL *)url
     sourceApplication:(NSString *)sourceApplication
     annotation:(id)annotation {

if ([[url scheme] isEqualToString:@"njoftime"]) {

    NSDictionary *getListingResponse = [[NSDictionary alloc]init];
    getListingResponse = [Utils getListing:[url query]];;

    if ([[getListingResponse objectForKey:@"status"] isEqualToString:@"success"]) {
         ListingViewController *listingView = [[ListingViewController alloc]init];
         [self.window.rootViewController.navigationController pushViewController:listingView animated:YES];
         return YES;
    }

但它只会启动我的应用程序,而不会启动我想启动的ListingViewController
你知道我该怎么做吗?

最佳答案

问题
为了处理从 AppDelegate 推送和弹出viewControllers的问题,您需要使用[UIApplication sharedApplication]来跟踪从根一开始的所有viewControllers。

解决方案
AppDelegate PUSH ViewController

ListingViewController *listingVC = [[ListingViewController alloc] init];
[(UINavigationController *)self.window.rootViewController pushViewController:listingVC animated:YES];
要刚刚显示的ViewController的 POP ,您需要使用此代码
[(UINavigationController *)[UIApplication sharedApplication].keyWindow.rootViewController popViewControllerAnimated:YES ];

关于ios - 从AppDelegate启动ViewController,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25891444/

10-12 00:16
查看更多