【发布时间】:2011-05-30 10:55:49
【问题描述】:
我正在尝试使用 UINavigationController 作为其他内部 UIViewController 视图的根容器创建一个基本导航应用程序。我已经通过共享工具栏实现了类似的功能。我想知道,这是一个好方法吗,因为工具栏及其项目在每个内部视图上都被重绘(我认为?)。所以,这里是我现有代码的一些细节。在我的主 MultiviewAppDelegate.m 实现文件中,在 didFinishLaunchingWithOptions 方法中,我正在初始化 UINavigationController,然后初始化第一个内部视图 (UIViewController),然后将其视图添加到 UINavigationController。
UINavigationController *nc = [[UINavigationController alloc] init];
[self.window addSubview:nc.view];
...
FirstView *v1 = [[FirstView alloc] init];
[nc pushViewController:v1 animated:NO];
[nc setToolbarHidden:NO];
...
所有其他内部视图(如 FirstView)扩展 BaseViewController 类(BaseViewController 扩展 UIViewController),因为在我的 BaseViewController 中,我实现了共享工具栏,我希望在内部视图中可见。因此,在 BaseViewController 类的 viewDidLoad 方法中,我正在创建该工具栏:
- (void)viewDidLoad {
UIBarButtonItem *firstViewBtnItem = [[UIBarButtonItem alloc]initWithTitle:@"FirstView" style:UIBarButtonItemStyleBordered target:self action:@selector(showFirstView)];
UIBarButtonItem *secondViewBtnItem = [[UIBarButtonItem alloc]initWithTitle:@"SecondView" style:UIBarButtonItemStyleBordered target:self action:@selector(showSecondView)];
...
NSArray *items = [NSArray arrayWithObjects:firstViewBtnItem, secondViewBtnItem, ..., nil];
[firstViewBtnItem release];
[secondViewBtnItem release];
[self setToolbarItems:items];
...
问题是我不确定每次出现每个新的内部视图时都重新绘制工具栏是否好。所以我不确定对背景做同样的事情是否是一个好的决定。或者,我想要的太多了:)
【问题讨论】:
-
我在每个子视图上方添加了 imageView,对我来说似乎工作正常 :-)
标签: iphone objective-c uinavigationcontroller background shared