使用工具栏及其按钮在不同的“子”视图控制器之间切换

时间:2011-10-21 11:03:48

标签: iphone objective-c cocoa-touch

有没有人对此方案有任何提示。

我的app delegate的nib将viewcontroller设置为rootviewcontroller,因此它会在应用程序加载时加载此视图控制器。

此viewcontroller有一个带有各种按钮的工具栏。这些按钮用于在不同的视图控制器之间切换。

我试过使用addChildViewController,presentViewController,presentModalViewController,什么都不允许我在视图控制器之间切换但是仍然保持工具栏可见。

如果我使用addSubView,那么所有的方向都是精神上的,我必须手动调整视图控制器的大小,这似乎不是我应该做的事情。

编辑:我想保持导航控制器的按钮可见,即使按下控制器,即如果我有一个编辑和删除按钮,我希望那些相同的按钮保留在工具栏上,即使我将不同的控制器推到堆栈上

3 个答案:

答案 0 :(得分:0)

听起来你应该使用标签栏。

或者,当按下工具栏按钮时,您应该使用带有工具栏的导航控制器和推/弹视图控制器:

请注意,如果您使用导航控制器,则无需显示导航栏。

    //create first button
    buttonOne = [[UIBarButtonItem alloc] initWithTitle:@"EDIT" style:UIBarButtonItemStyleBordered target:self action:@selector(editStuff)];
    [buttons addObject:buttonOne];

    //create second button
    buttonTwo = [[UIBarButtonItem alloc] initWithTitle:@"DELETE" style:UIBarButtonItemStyleBordered target:self action:@selector(deleteStuff)];
    [buttons addObject:buttonTwo];


    // Add buttons to toolbar and toolbar to nav bar.
    [buttonsToolbar setItems:buttons animated:NO];
    [buttons release];

    UIBarButtonItem *twoButtons = [[UIBarButtonItem alloc] initWithCustomView:buttonsToolbar];

    self.navigationItem.leftBarButtonItem = twoButtons;
    [twoButtons release];

答案 1 :(得分:0)

addSubview:不允许使用辅助视图控制器,因此这并不理想。

您可以使用带有条形按钮的工具栏来切换视图控制器,但最简单的实现是在每个视图控制器的nib中使用相同的工具栏,并使视图控制器成为处理所有工具栏操作的超类的子类。

没有必要使用标签栏或导航栏,尽管其中任何一种方法在某种程度上都是一种更简单的方法(但在重要方面不太明显)。

答案 2 :(得分:0)

使用UITabBarController作为根控制器。它充当子视图控制器的父容器,提供选项卡栏并实现子视图之间的切换。查看class referenceView Controller Programming Guide