Ios 带条件UIViewController的UIAbbarController

Ios 带条件UIViewController的UIAbbarController,ios,objective-c,uinavigationcontroller,uitabbarcontroller,conditional,Ios,Objective C,Uinavigationcontroller,Uitabbarcontroller,Conditional,按下条形图项目时,我想根据条件(如何检查用户是否登录)选择UIAbbarController中要显示的UIViewController。查看有两种方法 – tabBarController:shouldSelectViewController: – tabBarController:didSelectViewController: 因此,每次单击选项卡栏中的一个时,这些代理都将被调用,您可以执行其余操作。我最终创建了一个UIViewController作为UIAbbarController的子

按下条形图项目时,我想根据条件(如何检查用户是否登录)选择
UIAbbarController
中要显示的
UIViewController

查看有两种方法

– tabBarController:shouldSelectViewController:
– tabBarController:didSelectViewController:

因此,每次单击选项卡栏中的一个时,这些代理都将被调用,您可以执行其余操作。

我最终创建了一个UIViewController作为UIAbbarController的子级,该子级使用以下代码再次添加LoginViewController或UserViewController作为子级,如下所述:


什么是条形按钮?我的意思是选项卡条形项目。我想我的问题更多的是,我想根据用户是否登录、用户配置文件或登录ViewController,选择在按下某个条形按钮项目时显示哪个UIViewController。通过该代理,您只能控制是否应选择连接到条形图项目的对象。。不是它的内容吗?您可以在那里更改视图控制器。或者,另一种解决方案可能是在用户未登录的情况下,在UITabBarController上显示loginviewcontroller。另一种方法可能是像您一样处理用户配置文件并在控制器上登录。您可以在视图控制器上创建一个方法,这样当用户选项卡时,选项卡栏tabBarController:didSelectViewController:将被触发,并调用新创建的方法,检查用户是否在每次用户选项卡上的tabbar项时都实际登录。我试图在shouldSelectViewController中更改视图控制器,但它说您只能设置已在选项卡栏的视图控制器列表中的视图控制器。也许我必须使用带有contentView的第三个视图控制器。我仍然希望在显示用户配置文件或登录视图时显示工具栏。如果你有一个如何做到这一点的例子,那将是伟大的。
- (void)viewWillAppear:(BOOL)animated {

    // NSUserDefaults *storage = [NSUserDefaults standardUserDefaults];
    // self.signedIn = [storage boolForKey:@"signed_in"];

    // remove first if needed
    for (UIViewController * child in self.childViewControllers){
        [self hideContentController:child];
    }

    if(self.signedIn){
        [self displayContentController:self.loginController];
    } else {
        [self displayContentController:self.userController];
    }

    self.signedIn = !self.signedIn;
}

- (void) displayContentController: (UIViewController*) content;
{
    [self addChildViewController:content];                 // 1
    content.view.frame = self.view.frame; // 2
    [self.view addSubview:content.view];
    [content didMoveToParentViewController:self];          // 3
}

- (void) hideContentController: (UIViewController*) content
{
    [content willMoveToParentViewController:nil];  // 1
    [content.view removeFromSuperview];            // 2
    [content removeFromParentViewController];      // 3
}