我有一个自定义URL方案,我想打开某个ViewController
,但当我转到该URL时,它不是根目录。我已经能够做到这一点,剩下的就是将ViewController
从navigationController
推送到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/