我有一系列非常相似的设备,由一个带有三个选项卡的小程序控制。在每个视图控制器中,我使用导航控制器来扩展这些功能的设置。
第一个选项卡“输入”选项卡在这三个设备之间尤其不同,因此当检测到我已经在设备之间切换时,我会在我的应用程序委托中执行以下操作:
if ([self IsCrescendo])
{
//thirdViewController is really the crescendo'a input view - I need to rename that mess one day
crescendoInputView = [[ThirdViewController alloc] init : (UIViewController*) currentViewController];
crescendoInputView.title = [[viewControllers objectAtIndex:INPUT_TAB_INDEX] title];
crescendoInputView.tabBarItem = [[viewControllers objectAtIndex:INPUT_TAB_INDEX] tabBarItem];
[viewControllers replaceObjectAtIndex:INPUT_TAB_INDEX withObject:crescendoInputView];
[crescendoInputView release];
[self.tabBarController setViewControllers:viewControllers animated:FALSE];
}
if ([self IsSpirito3])
{ // similar to above using obviously a different view controller
}
if ([self IsSonata])
{ // similar to above using obviously a different view controller
}
最初,这个应用程序只控制一个设备,所以当我第一次创建它时,我在主窗口的 XIB 中设置了三个选项卡,效果很好。它默认为原始设备,导航栏完好无损。现在有更多的设备要控制,我想只使用一个 replaceObjectAtIndex 来换一个新的视图控制器,但我的导航栏消失了。
我非常感谢您能对此有所了解。谢谢!