objective-c - AppDelegate、rootViewController 和 presentViewController

标签 objective-c xcode facebook ios6 appdelegate

我正在做 Facebook 集成教程,如果用户有当前状态的有效 token ,我想显示我的 MainViewViewController,否则我想显示 LoginViewController。

MainViewAppDelegate.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    if (FBSession.activeSession.state == FBSessionStateCreatedTokenLoaded) {
        // To-do, show logged in view
    } else {
        // No, display the login page.
        [self showLoginView];
    }
    return YES;
}
- (void)showLoginView
{
    UIStoryboard *mainstoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard"          bundle:nil];
    LoginViewController* loginViewController = [mainstoryboard      instantiateViewControllerWithIdentifier:@"LoginViewController"];
    [self.window.rootViewController presentViewController:loginViewController animated:YES completion:NULL];
}

控制台错误:

Warning: Attempt to present <LoginViewController: 0xb492fd0> on <MainViewViewController: 0xb1bd820> whose view is not in the window hierarchy!

我不想使用 NavigationController。

最佳答案

我有同样的问题。基于对 this question 的回答,我在 presentViewController:animated:completion: 之前添加了 [self.window makeKeyAndVisible],并为我修复了它。

在你的情况下, showLoginView 变成

- (void)showLoginView
{
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
    LoginViewController *loginViewController = [storyboard instantiateViewControllerWithIdentifier:@"LoginViewController"];
    [self.window makeKeyAndVisible];
    [self.window.rootViewController presentViewController:loginViewController animated:YES completion:NULL];
}

关于objective-c - AppDelegate、rootViewController 和 presentViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13430179/

相关文章:

ios - Xcode 变得很慢,我无法再使用实际设备(模拟器没问题)

ios - 展开可选值

objective-c - 如何在 iOS 中检查 CLLocation 的有效性

ios - 为什么 objective-c NS_ENUM 变量自动具有默认值

ios - 在 objective-C 的 dispatch_async 中传递参数时出现 EXC_BAD_ACCESS

没有有效 OAuth 重定向 URI 的 Facebook 登录

ios - 在 iOS 上查找 Facebook SDK 版本

objective-c - 将 UIImage/UIGraphics 导入/包含到 Objective C 中

iphone - 在 Xcode 中,我们如何删除旧的物理设备?

ios - 我的 AVPlayer 的本地路径视频出现字符串错误