0

好的,那么我将如何执行此操作。

  1. 我有一个标签栏
  2. 在标签栏的一个视图控制器中,有两个按钮
  3. 当我单击 button1 时,它应该将我带到另一个屏幕,但它必须在底部有标签栏。
  4. 当我单击按钮 2 时,它应该带我到另一个屏幕,但又必须在底部有标签栏。

我试过 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
 }

那么解决方案是什么?谢谢 :)

4

1 回答 1

3

presentModalViewController完全是为了覆盖整个屏幕。

似乎您希望每个选项卡中都有一个导航控制器,因此每个选项卡都有自己的导航堆栈。诀窍是您应该将导航控制器添加到标签栏,然后将视图控制器添加到导航控制器。

tabbar
|
+- navigationController1
|     |
|     +- myViewController1
|
+- navigationController2
      |
      +- myViewController2

从上面的代码中,您似乎忽略了 UIViewController 已经有一个名为 的属性navigationController,因此您不应该自己声明它。

要正确设置导航控制器,请参阅带有导航控制器的标签栏应用程序

myViewController1作为 的根视图控制器正确插入时navigationController1,您可以轻松地呈现后续视图控制器,如下所示:

//in myViewController1
[self.navigationController pushViewController:myViewController3 animated:YES];
于 2012-10-16T15:55:32.407 回答