在uitabbarcontroller中更改选项卡名称

时间:2011-08-30 22:11:48

标签: ios objective-c iphone cocoa-touch uitabbarcontroller

我将TabBarController设置为主控制器选项卡,其中名称是使用界面构建器定义的。现在我想以编程方式更改其名称。

怎么可能呢?

7 个答案:

答案 0 :(得分:44)

已更新至XCode 8

自从我的原始答案以来,发生了很多事:Swift 3,Storyboards等。标题通常是所有视图共享的标题,并且可以在属性检查器中设置

Title Setup

此外,为了进行更多控制,您始终可以从设计器视图中拖动UITabBarItemUINavigationItem元素。您必须将它们拖动到将在标签栏/导航控制器中显示的视图中。基本上他们将信息存储为“我想在这样的标签栏中显示”。

enter image description here

  

Hello Scene正在添加一个TabBarItem,因此可以对其进行配置。

这两个元素的行为与通过代码访问视图控制器的.tabBarItem.navigationItem属性完全相同。如果这些属性是相应对象的子元素(nav具有navItem,tab具有tabItem),则这些属性始终存在于代码中,您无需在storyboard / xib中添加它们以获取它们。

最后这件事有点令人困惑,因为在storyboard / xib中,你似乎将它们添加到视图控制器中,但事实上你只是说“笔尖也会配置这些属性”。

原始答案

标签栏上显示的名称来自UIViewController的{​​{1}}属性,

title

您可以随时更改标题,并且应该更新标签栏项目上显示的文字。但请注意,尽快执行此操作,理想情况下,使用self.title = @"Name me!"; 方法(或initinitWithNibName:bundle:)。

这里的关键是,一旦标签栏出现在屏幕上,就会调用init方法,因为它会初始化它的所有视图控制器。如果您要在initWithCoder:上执行此操作,那么只有在您实际选择了标签,然后是其他系列的来电时才会调用viewDidLoadawakeFromNib,{{1}等等。

viewWillAppear:上拥有标题的想法是保持一致。如果在viewDidAppear:上显示viewController,顶部的导航栏应该使用title属性,就像使用back时一样。 UIViewController也尊重相同的标题属性并相应地更改。

就可重用性而言,您应该只从UINavigationController子类的内部设置标题。

Nib的方式

使用笔尖或故事板?如果您有UITabBarController,则可以在属性检查器中直接为其命名(或 4 )< / p>

Using interface builder, in the Attributes Inspector

不幸的是,如果文件所有者是UIViewController子类,那么你将无法以这种方式访问​​它,只是因为,XCode将文件所有者注册为“外部对象”,而不是显示一个配置面板。 :(

多个标题,相同的视图控制器

但有时候,你只想让它们命名不同

UIViewController

与邻居拧紧

每个UIViewController应该处理自己的名字,如果你想从外面强制它(因此,完全违反了我所说的关于可重用性的原始内容)会怎样?

UIViewController

您也可以使用导航项目,但这需要更多的体操比我舒服。

答案 1 :(得分:31)

但是可以在代码中执行此操作,最好直接在 Storyboard 中设置它。怎么样?

只需点按相应的标签栏项控制器内 NOT INSIDE TABBAR CONTROLLER )。

enter image description here

然后在实用程序面板上切换到attribute inspector

enter image description here

现在你可以改变一切: - )

答案 2 :(得分:3)

Swift 4 +

tabBarController?.tabBar.items![1].title = "xx"

答案 3 :(得分:2)

viewController.m

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
  //Here you are setting title

self.title = NSLocalizedString(@"Title", @"Title");

}
return self;
}

答案 4 :(得分:1)

这是您可以更改标签栏图标的名称和图像的方法:

 self.tabBarItem = [[[UITabBarItem alloc] initWithTitle:@"Main Tab" image:[UIImage imageNamed:@"maintab.png"]] autorelease];

答案 5 :(得分:1)

您可能希望在UITabBarController :: viewDidLoad中执行此操作,在这种情况下,您需要设置视图控制器的标题,因为标签栏项目当前为0。 所以使用

[[self.viewControllers objectAtIndex:0] setTitle: @"Buga"];
[[self.viewControllers objectAtIndex:1] setTitle: @"Nuga"];

答案 6 :(得分:-1)

我正在使用Xcode版本8.2.1(8C1002),这对我有用:

enter image description here