使用工具栏及其按钮在不同的“子”视图控制器之间切换
Posted
技术标签:
【中文标题】使用工具栏及其按钮在不同的“子”视图控制器之间切换【英文标题】:Switch between different 'child' view controllers using a toolbar and its buttons 【发布时间】:2011-10-21 11:03:48 【问题描述】:有没有人对这种情况有任何提示。
我的应用代理的 nib 有一个视图控制器设置为 rootviewcontroller,因此它会在应用加载时加载此视图控制器。
这个视图控制器有一个带有各种按钮的工具栏。这些按钮用于在不同的视图控制器之间切换。
我尝试过使用 addChildViewController、presentViewController、presentModalViewController,但没有任何东西可以让我在视图控制器之间切换,但工具栏仍然可见。
如果我使用 addSubView,那么所有方向的东西都会变得精神错乱,我必须手动调整视图控制器的大小,这似乎不是我应该做的事情。
编辑:即使在按下控制器时,我也希望保持导航控制器的按钮可见,即如果我有一个 EDIT 和 DELETE 按钮,即使我将不同的控制器推到堆栈上,我也希望这些相同的按钮保留在工具栏上
【问题讨论】:
你在做什么例子?还是您使用了模板项目? 您使用的是导航、标签栏还是拆分视图控制器? @MaxMacLeod 正在使用导航控制器 【参考方案1】:听起来你应该使用标签栏。
或者,当工具栏按钮被按下时,您应该使用带有工具栏的导航控制器和推送/弹出视图控制器:
请注意,如果您使用导航控制器,导航栏不必可见。
//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];
【讨论】:
谢谢@ade 我将尝试使用没有动画的导航控制器,看看它的外观,然后标记为正确。 多么伟大的使命。更改了所有内容以使用导航控制器,但我不想看到 self.navController.navigationBarHidden = YES; [self.navigationController setNavigationBarHidden:YES Animation:animated]; 我希望原始按钮出现在工具栏中,请参阅我的编辑【参考方案2】:addSubview:
不允许使用辅助视图控制器,所以这并不理想。
您可以使用带有条形按钮的工具栏来切换视图控制器,但最简单的实现是在每个视图控制器的 nib 中具有相同的工具栏,并使视图控制器成为处理所有工具栏操作的超类的子类。
没有必要使用标签栏或导航栏,尽管这两种方法在某些方面都是一种更简单的方法(但在重要的方面不太明显)。
【讨论】:
在 ios 5 中,您绝对可以使用addSubview
将另一个视图控制器的视图添加到组合中,但您必须将其与对 addChildViewController
的调用相匹配您要向其中添加所述子视图控制器的父 VC(那里有点拗口)。这样,您的辅助视图控制器将接收父级将接收的所有各种旋转和外观调用。
完全正确 - 您不能使用 addSubview: 从另一个视图控制器窃取视图。鉴于他对尝试不同方法的评论,我认为 OP 将通过在他的示例中使用单个视图控制器来获得最佳体验。【参考方案3】:
使用 UITabBarController 作为您的根控制器。这充当您的子视图控制器的父容器,提供标签栏并实现子视图之间的切换。查看class reference 或View Controller Programming Guide
【讨论】:
以上是关于使用工具栏及其按钮在不同的“子”视图控制器之间切换的主要内容,如果未能解决你的问题,请参考以下文章