0

我想创建一个标题为“配置文件”的 tabBarController,如果用户未登录,它会触发登录流程,如果未登录,则拉起某个视图控制器。我不可能是世界上唯一一个不需要类似东西的人。我尝试了以下类似的方法。

@implementation ProtectedViewController
//...
- (void)viewDidLoad
{
    [super viewDidLoad];
    if (FBSession.activeSession.state == FBSessionStateCreatedTokenLoaded) {
        [self presentViewController: self.targetViewController animated: NO completion: nil];
    } else {
        AppDelegate* appDelegate = [[UIApplication sharedApplication] delegate];
        [appDelegate showLoginView];
    }
}

+ (ProtectedViewController*)protectedControllerFor:(UIViewController*)viewController
{
    ProtectedViewController* protectedViewController = [[ProtectedViewController alloc] initWithNibName: nil bundle: nil];
    protectedViewController.targetViewController = viewController;
    return protectedViewController;
}
//...

someTabBarController.viewControllers = [feedViewController, [ProtectedViewController protectedControllerFor: newPostController];

这感觉很笨拙(并且还没有真正起作用)。这通常是如何完成的?

4

1 回答 1

0

这样做的方法是在您的 appDelegate 中提供功能。如果您需要一个登录窗口,您可以在此处对其进行实例化并使其成为该窗口的 rootViewController。用户登录后,您向 appDelegate 发出信号,然后它会创建一个标签栏控制器,并使 tabBarController 成为 rootViewController。

我所做的是将 loginView 淡出,然后将 tabBarView 淡入。您必须进行试验以找到最佳转换。

于 2013-10-28T22:40:28.080 回答