iPhone:设置导航栏标题

时间:2010-02-17 12:54:43

标签: iphone objective-c uinavigationcontroller uinavigationbar uinavigationitem

嘿所有人。我仍然是iPhone开发的新手,我在找出如何更改导航栏的标题方面遇到了一些麻烦。关于这个网站上的另一个问题,有人建议使用:

viewController.title = @"title text";

但这对我不起作用...我是否需要添加UINavigationController才能完成此任务?或者也许只是我的UIViewController子类的一个插座?如果它有帮助,我在IB中定义了导航栏,我试图在我的UIViewController子类中设置它的标题。这是另一个让我头疼的简单事情。把self.title = @“title text”;在viewDidLoadinitWithNibName中也没有效果。有人知道发生了什么以及如何让它发生正确吗?

谢谢!

14 个答案:

答案 0 :(得分:153)

视图控制器必须是某个UINavigationController的子级才能使.title属性生效。如果UINavigationBar只是一个视图,则需要按下包含标题的导航项,或修改最后一个导航项:

UINavigationItem* item = [[UINavigationItem alloc] initWithTitle:@"title text"];
...
[bar pushNavigationItem:item animated:YES];
[item release];

bar.topItem.title = @"title text";

答案 1 :(得分:121)

如果您使用viewDidLoad UIViewController方法中的代码执行此操作,则只应添加self.title = @"title text";

类似的东西:

- (void)viewDidLoad {
    [super viewDidLoad];
    self.title = @"title";
}

您也可以尝试self.navigationItem.title = @"title";

还检查您的navigationItem是否为空,如果您已为导航栏设置自定义背景,请检查是否设置了标题。

答案 2 :(得分:32)

使用self.title = @"title";

时遇到一个问题

如果您使用导航栏和标签栏,上面的行也会更改标签栏项目的标签。为避免这种情况,请使用@testing建议的

self.navigationItem.title = @"MyTitle";

答案 3 :(得分:12)

如果您想更改导航栏标题(而不是导航栏后退按钮标题!),此代码将起作用。

self.navigationController.topViewController.title = @"info";

答案 4 :(得分:9)

如果要在tabBar控制器中更改navBar的标题,请执行以下操作:

-(void)viewDidAppear:(BOOL)animated {
    self.navigationController.navigationBar.topItem.title = @"myTitle";
}

答案 5 :(得分:5)

在我的导航应用中,我这样做:

myViewController.navigationItem.title = @"MyTitle";

答案 6 :(得分:4)

默认情况下,导航控制器会显示“topitem”的标题

所以在appdelegate的viewdidload方法中你可以。我测试了它,它的工作原理

navController.navigationBar.topItem.title = @"Test";

答案 7 :(得分:4)

我在TabbarController中集成了导航控制器。这工作

self.navigationItem.title=@"title";

答案 8 :(得分:2)

UINavigationItem* item = [[UINavigationItem alloc] initWithTitle:@"title text"];
...
[bar pushNavigationItem:item animated:YES];
[item release];

此代码有效。

答案 9 :(得分:2)

如果您正在使用Storyboards,可以单击控制器,切换到属性选项卡,然后在那里设置标题文本。

答案 10 :(得分:1)

我猜你需要一个动态标题,这就是为什么你不在IB中设置它。

我认为你的viewController对象是NIB中指定的那个?

也许尝试将其设置为IB中的虚拟值,然后调试方法以查看哪个控制器具有虚拟值 - 假设它显示为标题...

答案 11 :(得分:1)

从TableViewController.m中 :

  

self.navigationController.navigationBar.topItem.title = @" Blah blah一些惊人的标题&#34 ;;

答案 12 :(得分:1)

对于你们所有的Swift-ers,这对我来说非常合适。它也是完成标题设置的较短方式之一:

override public func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
  if segue.identifier == "presentLineItem" {
    print("Setting Title")
    var vc = segue.destinationViewController as! LineItemsTableViewController
    vc.navigationItem.title = "Line Item"
  }
}

答案 13 :(得分:0)

对我有用的是self.titleLabel.text = @"New Title";