【问题标题】:Unable To Add Second Tab Bar to Tab Controller无法将第二个选项卡栏添加到选项卡控制器
【发布时间】:2012-12-08 20:05:24
【问题描述】:

我有两个标签栏,以便产生类似于Sliding UITabBarItems in UITabBarController 问题中所示的效果

我试图在最后一个索引处使用标签栏项目而不是箭头,显示另一个标签栏,并隐藏当前标签栏。我在viewDidLoad 中以编程方式添加第二个标签栏。问题是当最后一个标签栏项目被点击时,我的第二个标签栏没有出现。我所做的是:

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view from its nib.
    self.tabControler.view.frame = self.view.frame;
    self.tabControler.delegate = self;
    self.secondTabBarSelected = NO;

    self.secondTabBar = [[UITabBar alloc] initWithFrame:CGRectMake(0, 431, 320, 49)];
    self.secondTabBar.hidden = YES;
    self.secondTabBar.delegate = self;
    self.secondTabBar.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleTopMargin;
    [self.tabControler.view addSubview:secondTabBar];

    [self.view addSubview:tabControler.view];
    NSLog(@"children of tabcon: %@",[tabControler.view subviews]); //Here second tab bar added with correct frame
}

-(void) tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
{
    if (!self.secondTabBarSelected) {
        NSLog(@"first tab bar");
        if([[tabBarController viewControllers] indexOfObject:viewController] == 3)
        {
            self.firstTabBar.hidden = YES;
            self.secondTabBar.hidden = NO;

        }
    }
}

【问题讨论】:

    标签: ios5 uitabbarcontroller uitabbar


    【解决方案1】:

    我发现我的标签栏不可见,因为我在它存在于 nib 文件中时明确分配它。相反,我只是设置了框架。我更正的代码是:

    - (void)viewDidLoad
    {
        [super viewDidLoad];
        // Do any additional setup after loading the view from its nib.
        self.tabControler.view.frame = self.view.frame;
        self.tabControler.delegate = self;
        self.secondTabBarSelected = NO;
    
        self.secondTabBar.frame = self.firstTabBar.frame;
        self.secondTabBar.hidden = YES;
        self.secondTabBar.delegate = self;
        NSLog(@"viewdidload frame: %@",secondTabBar.frame);
    
        self.secondTabBar.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleTopMargin;
        [self.tabControler.view addSubview:self.secondTabBar];
        NSLog(@"viewdidload frame: %@",secondTabBar.frame);
    
    
        [self.view addSubview:tabControler.view];
    }
    
    -(void) tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
    {
    
            NSLog(@"first tab bar - controller");
            if([[tabBarController viewControllers] indexOfObject:viewController] == 3)
            {
                self.firstTabBar.hidden = YES;
                self.secondTabBar.hidden = NO;
                self.secondTabBarSelected  = YES;
            }
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-10
      • 2018-06-08
      • 2019-08-03
      • 1970-01-01
      • 2016-12-30
      相关资源
      最近更新 更多