NavigationController中的静态SegmentedControl,加载适当的ViewControllers

时间:2009-03-10 19:18:28

标签: iphone objective-c

我有2个独立的TableViewControllers。在一个特定的实例中,我希望能够加载一个ViewController,它将SegmentedControl放在NavigationController中......然后它将加载相应的TableViewController。

目前我有SegmentedControl只是pushishing正确的TableViewController,如果我手动启动推送它工作正常。但是如果我尝试在ViewDidAppear之前的任何时候进行推送,那么推送的TableViewController将不会显示任何内容。但是它会将事情描述为正常。

需要注意的是,2个TableViewConrollers都不同,我不能只使用一个Controller而只是切换dataSource。

有什么建议吗?

2 个答案:

答案 0 :(得分:1)

您可能希望拥有一个包含两个表控制器的视图控制器,而不是将表视图控制器推送到导航控制器。然后,将其中一个表视图添加为视图控制器视图的子视图。即切换分段控制器时,您可以执行以下操作:

[self.tableController1.view removeFromSuperview];
[self.view addSubview self.tableConttroller2.view];

您可能还需要向表控制器发送相应的view[Will/Did][Appear/Disappear]消息,以确保它们已正确初始化。

答案 1 :(得分:1)

我实际上为我的问题找到了更好的解决方案,所以如果有人有兴趣......

在viewController ...

中创建子navigationController
  • 在viewController中创建一个UINavigationController
  • 将其代表分配给 的viewController
  • 添加navigationController的视图 作为viewController的子视图
  • 隐藏viewController的 导航栏 (self.navigationController.navigationBarHidden =是;)
  • 在viewController中实现 遵循2个协议:


-(void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated{
    [viewController viewWillAppear:animated];
}
-(void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated{
    [viewController viewDidAppear:animated];
}
Bam,你在UINavigationController> viewController中得到了一个UINavigationController
希望这有助于某人!