我需要一些关于如何创建将其根视图控制器加载到主视图控制器的导航控制器的帮助。然后,我想让导航控制器有两个选择器按钮(leftBarButtonItem和rightBarButtonItem),它们将把用户带到2个自定义视图控制器(AboutViewController和SettingsViewController)。
我能够成功完成此操作,但我在MainWindow.xib中创建了2个视图控制器,所有代码都在AppDelegate.h和AppDelegate.m中。这显然不是一个好习惯,特别是当你有很多自定义视图控制器时。
感谢。
答案 0 :(得分:1)
你是对的,在AppDelegate中创建视图控制器并不是一个好习惯。相反,您应该为每个视图创建一个单独的ViewController。在rootViewController的实现文件中,创建方法以按下按钮时要显示的单独视图控制器。像这样的东西会起作用:
- (void)showAboutView
{
AboutViewController *aboutViewController = [[AboutViewController alloc] init];
[self.navigationController pushViewController:aboutViewController animated:YES];
}
- (void)showSettingsView
{
SettingsViewController *settingsViewController = [[SettingsViewController alloc] init];
[self.navigationController pushViewController:settingsViewController animated:YES];
}
然后,在按钮的选择器字段中包含这些方法。像这样:
UIBarButtonItem *aboutBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAction target:self action:@selector(showAboutView)];
[[self navigationItem] setRightBarButtonItem:aboutBarButtonItem];
这应该注意推动你的观点。 navigationController将自动显示一个“返回”按钮。
在AppDelegate中,您将创建navigationController并告诉它将是rootViewController的视图,如下所示:
ViewController1 *vc1 = [[ViewController1 alloc] init];
mainNavigationController = [[UINavigationController alloc] initWithRootViewController:vc1];
希望这有帮助!