我正在使用three20 TTTableViewController
作为我当前的项目。要在视图之间切换,我使用UITabBar
。我的一些观点有子视图 - 我不使用TTNavigator
来切换这些视图,而是使用我自己的逻辑(简单的push / pop viewControllers)。
不知何故,我无法在这些子视图中设置UINavigationBar
的颜色/样式(最初,它适用于由tabbarcontroller
控制的主视图。)
我的设置如下:
在AppDelegate
我准备rootViewController
和navigationController
RootViewController *rootController = [[[RootViewController alloc] init] autorelease];
navigationController_ = [[UINavigationController alloc] initWithRootViewController:rootController];
navigationController_.navigationBar.barStyle = UIBarStyleBlack;
window_ = [[PSWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
window_.rootViewController = navigationController_;
这里我将UIBarStyleBlack
设置为我的默认样式。当我运行应用程序并查看不同的视图时,导航栏颜色/样式是正确的。
我的mainViews
之一将用户转发到TTTableView
UIViewController* targetViewController = [[[NSClassFromString(targetVC) alloc] init] autorelease];
if(targetViewController != nil) {
[[self retain] autorelease];
[self.navigationController popViewControllerAnimated:NO];
targetViewController.title = @"A Title";
[self.navigationController pushViewController:targetViewController animated:YES];
}
上面的代码弹出当前的viewController并将targetViewController
推送到堆栈上。这有效。但是,navigationBar
颜色/样式现在是默认颜色/样式,而不是黑色,因为我在AppDelegate
中设置了它。我已经检查了调试器中的对象地址,它与navigationController
中的navigationBar
+ rootViewController
相同。
当我在目标初始化函数中明确设置navigationBar
颜色/样式时,将忽略这些设置。
此外,当我现在点击导航栏中的后退按钮时,mainViews
中的bartyle /颜色也不正确(从黑色到默认)。
我有什么想法可以调试/解决这个问题吗?