首页 文章

iPhone:设置导航栏 Headers

提问于
浏览
81

大家好 . 我仍然是iPhone开发的新手,我在如何更改导航栏的 Headers 时遇到了一些麻烦 . 关于本网站的另一个问题,有人建议使用:

viewController.title = @"title text";

但是,我试图在我的UIViewController子类中设置它的 Headers 是不是't working for me...Do I need to add a UINavigationController to accomplish this? Or maybe just an outlet from my UIViewController subclass? If it helps, I defined the navigation bar in IB and I' . 这是另一个让我头疼的简单事情 . 把self.title = @ "title text";在 viewDidLoadinitWithNibName 没有't work either. Anybody know what'正在发生以及如何让它正确发生?

谢谢!

14 回答

  • 119

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

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

    要么

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

    如果您通过 UIViewControllerviewDidLoad 方法中的代码完成所有操作,则只应添加 self.title = @"title text";

    像这样的东西:

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

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

    还要检查您的navigationItem是否为空,并且如果您已将自定义背景设置为导航栏,请检查是否在没有它的情况下设置了 Headers .

  • 4

    使用 self.title = @"title"; 有一个问题

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

    self.navigationItem.title = @"MyTitle";
    
  • 12

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

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

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

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

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

    myViewController.navigationItem.title = @"MyTitle";
    
  • 1

    我有一个集成在TabbarController中的导航控制器 . 这很有效

    self.navigationItem.title=@"title";
    
  • 1

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

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

    navController.navigationBar.topItem.title = @"Test";
    
  • 5
    UINavigationItem* item = [[UINavigationItem alloc] initWithTitle:@"title text"];
    ...
    [bar pushNavigationItem:item animated:YES];
    [item release];
    

    这段代码有效 .

  • 1

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

  • 2

    我想你需要一个动态 Headers ,这就是为什么你不在IB中设置它 .

    我假设你的viewController对象是在NIB中指定的对象?

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

  • 4

    从TableViewController.m中:

    self.navigationController.navigationBar.topItem.title = @“Blah blah一些惊人的头衔”;

  • 0

    对于你们所有的Swift-ers来说,这对我来说非常合适 . 这也是完成设置 Headers 的简短方法之一:

    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"
      }
    }
    
  • 9

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

相关问题