0

好吧,那么我将如何去执行此操作。iOS TabBar和导航控制器

  1. 我有一个标签栏
  2. 在标签栏的一个视图控制器有两个按钮
  3. 当我在Button1的Click应该带我去一个不同的屏幕,但它必须有标签酒吧在底部。
  4. 当我点击button2时,它应该带我到不同的屏幕,但再次必须在底部的标签栏。

我试图 1 presentModalViewController - 但只是覆盖了整个屏幕 2.加入第二屏幕子视图的第一个屏幕。 - 这显示了我想看到的第二个视图,并且底部有标签栏。但它不起作用。这意味着我有一个scrollview等嵌入在视图中,但没有任何工作时,添加子视图 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 
} 

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

回答

3

presentModalViewController正好意味着覆盖整个屏幕。

看来你想要在每个选项卡中的导航控制器,所以每个选项卡都有自己的导航堆栈。诀窍是您应该将导航控制器添加到标签栏,然后将您的视图控制器添加到导航控制器。

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

从上面的代码,看来你已经错过了UIViewController中已有名为navigationController属性点,所以你不应该自己申报。

对于正确设置导航控制器,见Tab Bar Application With Navigation Controller

myViewController1正确作为navigationController1根视图控制器插入,那么可以方便地存在后续viewcontrollers这样的:

//in myViewController1 
[self.navigationController pushViewController:myViewController3 animated:YES]; 
+0

这工作最初。但在navigationController1我想两个viewcontrollers(这是因为viewcontroller1出现时,我按下按钮,并viewcontroller2出现时,当我按下按钮B,并且这两个按钮都在navigationControllers rootviewcontroller)?任何解决方案 – CodeGeek123

+0

我编辑了我的答案,希望能更好地反映你的问题。 – hlynbech