【问题标题】:UINavigation controller with bottom toolbar loses UIBarButtonItems on view switch带有底部工具栏的 UI 导航控制器在视图切换时丢失 UIBarButtonItem
【发布时间】:2011-03-07 09:39:33
【问题描述】:

我有一个以编程方式创建的导航控制器来处理 UISegmentedControl 的视图之间的切换。 (称为segmentsNavigationController)

导航控制器有一个底部工具栏,其中包含几个以编程方式添加的 UIBarButtonItem。为了处理开关,我有以下代码:

- (void)indexDidChangeForSegmentedControl:(UISegmentedControl *) aSegmentedControl {
NSUInteger index = aSegmentedControl.selectedSegmentIndex;

if( index == 0 ) {
    OneViewController *oneViewController = nil;

    if( (oneViewController = [self.viewControllers objectForKey:@"one"]) == nil ) {
        oneViewController = [[OneViewController alloc] init];
        [self.viewControllers setObject:oneViewController forKey:@"one"];
        [oneViewController release];
    }
    NSArray *theViewControllers = [NSArray arrayWithObject:oneViewController];
    [self.segmentsNavigationController setViewControllers:theViewControllers animated:YES];
}
else if( index == 1 ) {
    TwoViewController *twoViewController = nil;

    if( (twoViewController = [self.viewControllers objectForKey:@"two"]) == nil ) {
        twoViewController = [[RelatedArticlesViewController alloc] init];
        [self.viewControllers setObject:twoViewController forKey:@"two"];
        twoViewController.hidesBottomBarWhenPushed = YES;

        [twoViewController release];
    }

    NSArray *theViewControllers = [NSArray arrayWithObject:twoViewController];      
    [self.segmentsNavigationController setViewControllers:theViewControllers animated:YES];     
}

}

所以最终当我从一个视图切换到另一个视图并返回时,导航控制器底部栏中的所有 UIBarButtons 都会丢失。这是为什么?我做错了吗?

【问题讨论】:

    标签: iphone ios uinavigationcontroller uisegmentedcontrol


    【解决方案1】:

    经过一番搜索后,我意识到我一直在错误地使用 UINavigationController。

    导航控制器的工具栏是内部显示的导航视图的一部分,而不是父视图的一部分。 (我花了一段时间才弄清楚这一点!)我在同一个控制器中创建按钮,我正在创建segmentsNavigationController,而不是在我应该拥有的oneViewController中。

    将代码移至 OneViewController 并将工具栏设置为:

        [self setToolbarItems: [[NSArray alloc] initWithObjects: button1, button2, nil] animated: NO];
    

    成功了!

    【讨论】:

      猜你喜欢
      • 2017-03-20
      • 1970-01-01
      • 1970-01-01
      • 2014-12-09
      • 1970-01-01
      • 2011-10-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多