好的,那我该如何进行这项操作呢。
我试过了 1. presentModalViewController - 但它只覆盖整个屏幕 2.将第二个屏幕作为子视图添加到第一个屏幕。 - 这显示了我想要看到的第二个视图,并且底部还有标签栏。但它不起作用。这意味着我在视图中嵌入了一个滚动视图等,但在添加为子视图时却没有任何效果 3.导航控制器 - 我认为这应该是一种方式,并再次尝试在viewdidload中添加一个新的导航控制器,但程序崩溃。
@interface SettingsViewController : UIViewController <CLLocationManagerDelegate>
@property (nonatomic,retain) UINavigationController * navigationController;
- (void)viewDidLoad
{
[super viewDidLoad];
[self.view setBackgroundColor:[[ApplicationResources applicationResources]lightGreyColour]];
self.postCodeTextField.hidden = TRUE;
self.navigationController = [[UINavigationController alloc] initWithRootViewController:self];
[self.view addSubview:self.navigationController.view];
//self.facebookSwitch
}
那么解决方案是什么?谢谢:)
答案 0 :(得分:3)
presentModalViewController
正是为了覆盖整个屏幕。
您似乎希望每个选项卡中都有一个导航控制器,因此每个选项卡都有自己的导航堆栈。诀窍是你应该将导航控制器添加到标签栏,然后将视图控制器添加到导航控制器。
tabbar
|
+- navigationController1
| |
| +- myViewController1
|
+- navigationController2
|
+- myViewController2
从上面的代码中,您似乎错过了UIViewController已经有一个名为navigationController
的属性的点,因此您不应该自己声明它。
要正确设置导航控制器,请参阅Tab Bar Application With Navigation Controller
当myViewController1
作为navigationController1
的根视图控制器正确插入时,您可以轻松地呈现如下的后续视图控制器:
//in myViewController1
[self.navigationController pushViewController:myViewController3 animated:YES];