iPhone:ViewController作为标签栏

时间:2010-01-17 18:47:33

标签: iphone properties uiviewcontroller uinavigationcontroller

嘿伙计我需要一些帮助:

我有两个视图控制器,让我们说:

  • FirstViewController(第一个)位于navigationviewcontroller
  • SecondViewController(第二个)

所以在第一个viewDidLoad方法中我有这个:

SecondViewController *second = [[SecondViewController alloc] initWithNibName:...];

[self.addsubview:second.view];

我已经完成了这个因为我想用自定义按钮和颜色制作我的自定义标签栏。

当我按下自定义“标签栏”(seconviewcontroller)的其中一个按钮时,我有这个

ConfiguracionViewController *conf = [[ConfiguracionViewController alloc] initWithNibName:@"ConfiguracionView" bundle:nil];

[self.navigationController pushViewController:conf animated:YES];
[conf release];

但是因为在第一个视图控制器中没有按下或模态显示第二个视图控制器,所以我无法访问navigationController。我也试过这个

[self.parentViewController.navigationController pushViewController:...];

但它也没有用。

请帮助我,我需要学习如何做到这一点并抱歉我的英语不好。

最诚挚的问候,
卡洛斯巴尔加斯

1 个答案:

答案 0 :(得分:1)

首先,您不应该将第二个视图添加到第一个视图中,如下所示:

[self.view addSubview:second.view];

属性parentViewController在这种情况下不起作用,因为second不是导航层次结构的一部分。

相反,您可以创建引用“父”视图控制器的属性:

SecondViewController *second = [[SecondViewController alloc] initWithNibName:...];

// set new property
second.parentVC = self;

[self.view addSubview:second.view];

在SecondViewController.h中,您需要为“parentVC”声明实例变量和属性,在SecondViewController.m中需要合成属性。

然后,您应该能够访问导航控制器并从SecondViewController.m推送视图控制器,如下所示:

[self.parentVC.navigationController pushViewController:...];