首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UITabBarItem.title与UINavigationController.title

UITabBarItem.title与UINavigationController.title
EN

Stack Overflow用户
提问于 2011-07-11 07:54:18
回答 3查看 3.6K关注 0票数 5

我分配了一个带有标题(initWithTitle)的UITabBarItem,并将其连接到UINavigationController。

我发现,如果导航控制器的根视图控制器有自己的标题,那么该标题将永久替换选项卡栏项目上指定的标题。例如,如果选项卡栏项目的标题设置为1,导航控制器的根视图控制器的标题设置为2,则选项卡栏项目始终显示2,而不是1。显示选项卡栏项目的唯一方法是完全省略导航控制器的根标题。

问题是,我希望每个控件都有不同的标题,因为选项卡栏项目并不总是指向导航控制器的根视图控制器-它显示了最后一个推到导航控制器上的视图控制器,这意味着选项卡栏上根的标题可能是不合适的。另一方面,我不能只是在导航控制器中丢弃标题,因为它是在导航栏上使用的。有点像第二十二条军规。

有什么办法可以解决这个问题吗?

EN

回答 3

Stack Overflow用户

发布于 2011-07-11 07:58:49

我经常使用带有tabBar的navigationBar,并且几乎不会有相同的标题。我使用的代码(在init中)是这样的:

代码语言:javascript
复制
// 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"];  

我从来没有遇到过这样的问题。

票数 7
EN

Stack Overflow用户

发布于 2011-07-11 15:56:24

好吧,这是我发现的。

看起来如果你这样做了:

代码语言:javascript
复制
MainNavController *main = [[MainNavController alloc] init];
UITabBarItem *tabBarItem = [[UITabBarItem alloc] initWithTitle:@"ONE" image:[UIImage imageNamed:@"one.png"] tag:1];
main.tabBarItem = tabBarItem;
[tabBarItem release];

然后,在推送到main的根视图控制器中,执行以下操作:

代码语言:javascript
复制
self.title = @"TWO";

那么发生的事情就是我上面所描述的。

但是,如果我在main的根视图控制器中添加以下行,我就可以修复它:

代码语言:javascript
复制
self.navigationController.tabBarItem.title = @"ONE";

这似乎是一种“时机”问题。

票数 3
EN

Stack Overflow用户

发布于 2016-06-24 11:48:09

UINavigationControllerUITabBarControllerviewControllers之一。因此,设置UINavigationControllertabBarItem.title,它将覆盖UINavigationControllerrootViewController的标题。UINavigationController将其navigationBar的标题设置为其topViewController.title

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6644555

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档