如果在iOS中启动时提供URL,如何加载不同的视图控制器

时间:2013-03-26 09:38:19

标签: ios objective-c ios6

我有一个应用程序,它使用safari进行身份验证,当它返回时,我希望它立即加载表视图,没有登录视图。 以下是我现在所做的事情:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    DVGViewController *myVC = [[DVGViewController alloc] initWithNibName:@"DVGViewController" bundle:nil];
    self.viewController = [[UINavigationController alloc] initWithRootViewController:myVC];
    self.window.rootViewController = self.viewController;
    [self.window makeKeyAndVisible];
    return YES;
}


- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
    // some code skipped
    UITableViewController *myTVC = [[DVGTableViewController alloc] init];
    self.viewController = [[UINavigationController alloc] initWithRootViewController:myTVC];
    return YES;
}

目前我仍然得到第一种方法来工作,虽然第二种方法也被触发,因为我从url计算得到它并且我知道。为什么它不加载tableView我不知道。

2 个答案:

答案 0 :(得分:0)

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url

方法将调用,如果你的应用程序来自特定的URl,如来自facebook auth或来自safari,那么此方法将调用

答案 1 :(得分:0)

我发现了一个错误。在第二种方法中,我从未设置过window和rootViewController。将此代码添加到第二种方法有帮助。

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.window.rootViewController = self.viewController;
[self.window makeKeyAndVisible];