我正在基于 Xcode 中的 Utility 模板构建一个应用程序,并在其中添加了更多视图。我的应用程序结构如下:
MainView(应用程序菜单)
翻转视图(计算器)
UINavigationController
设置视图
viewDiDLoad:UITabBarController
- Tab1 view (options) - Tab2 view (information text)
我可以正确地从 MainView 导航到 Flip-side 视图,这也是 Navigation Controller 的根视图。从我的 Flip-side 视图中,我推送了导航控制器的第二个视图(设置视图),该视图配置为在加载后立即显示带有两个选项卡的 UITabBarController(使用 viewDidLoad)。
如果我删除了 UITabBarController,我可以使用“设置”视图中的“popViewController”毫无问题地返回到我的翻转侧视图。如果我在“设置”视图中的 viewDiDLoad 中加载 UITabBarController 就会出现问题......选项卡工作正常,但我无法再返回到我的翻转侧视图(导航控制器的根视图)。
如果我使用导航控制器的导航栏,我可以返回,但我想配置自己的按钮并隐藏导航栏。
到目前为止,我已经尝试了以下方法:
[self.navigationController popViewControllerAnimated:YES];
[self.navigationController popToRootViewControllerAnimated:YES];
[self.navigationController popToViewController:FlipSideViewController 动画:YES];
但它们似乎不起作用。前两个什么都不做(屏幕保持原样),第三个不识别“FlipsideViewController”(可能是因为它是 MainViewController 的委托?)。
如果我激活它,有没有办法检查导航栏的“后退”按钮到底在做什么?
我应该使用代表吗?
我可以从两个选项卡视图中的任何一个在我的设置视图中调用 popViewController 方法吗?
这是我的翻转视图:
- (IBAction)showSettingsView {
SettingsViewController *controller = [[SettingsViewController alloc] initWithNibName:@"SettingsView" bundle:nil];
controller.title = @"Settings";
[self.navigationController pushViewController:controller animated:YES];
[controller release];
}
这是我的设置视图:
- (void)viewDidLoad {
[super viewDidLoad];
tabBarController = [[UITabBarController alloc] init];
Tab1ViewController* vc1 = [[Tab1ViewController alloc] init];
Tab2ViewController* vc2 = [[Tab2ViewController alloc] init];
NSArray* controllers = [NSArray arrayWithObjects:vc1, vc2, nil];
tabBarController.viewControllers = controllers;
[self.view addSubview:tabBarController.view];
}
以及在选项卡视图之一中返回的方法:
- (IBAction)backFromTab1View {
[self.navigationController popToViewController:FlipSideViewController animated:YES];
}
非常感谢,如果问题太基本,对不起!