我分配了一个带有标题(initWithTitle)的UITabBarItem,并将其连接到UINavigationController。
我发现,如果导航控制器的根视图控制器有自己的标题,那么该标题将永久替换选项卡栏项目上指定的标题。例如,如果选项卡栏项目的标题设置为1,导航控制器的根视图控制器的标题设置为2,则选项卡栏项目始终显示2,而不是1。显示选项卡栏项目的唯一方法是完全省略导航控制器的根标题。
问题是,我希望每个控件都有不同的标题,因为选项卡栏项目并不总是指向导航控制器的根视图控制器-它显示了最后一个推到导航控制器上的视图控制器,这意味着选项卡栏上根的标题可能是不合适的。另一方面,我不能只是在导航控制器中丢弃标题,因为它是在导航栏上使用的。有点像第二十二条军规。
有什么办法可以解决这个问题吗?
发布于 2011-07-11 07:58:49
我经常使用带有tabBar的navigationBar,并且几乎不会有相同的标题。我使用的代码(在init中)是这样的:
// SET TAB BAR NAME AND IMAGE
[[self tabBarItem] setTitle:@"Short Title"];
[[self tabBarItem] setImage:[UIImage imageNamed:@"MyImage.png"]];
// SET NAVIGATION
[[self navigationItem] setTitle:@"Much Longer Title"]; 我从来没有遇到过这样的问题。
发布于 2011-07-11 15:56:24
好吧,这是我发现的。
看起来如果你这样做了:
MainNavController *main = [[MainNavController alloc] init];
UITabBarItem *tabBarItem = [[UITabBarItem alloc] initWithTitle:@"ONE" image:[UIImage imageNamed:@"one.png"] tag:1];
main.tabBarItem = tabBarItem;
[tabBarItem release];然后,在推送到main的根视图控制器中,执行以下操作:
self.title = @"TWO";那么发生的事情就是我上面所描述的。
但是,如果我在main的根视图控制器中添加以下行,我就可以修复它:
self.navigationController.tabBarItem.title = @"ONE";这似乎是一种“时机”问题。
发布于 2016-06-24 11:48:09
UINavigationController是UITabBarController的viewControllers之一。因此,设置UINavigationController的tabBarItem.title,它将覆盖UINavigationController的rootViewController的标题。UINavigationController将其navigationBar的标题设置为其topViewController.title。
https://stackoverflow.com/questions/6644555
复制相似问题