【问题标题】:Set title of navigation bar?设置导航栏的标题?
【发布时间】:2012-07-02 15:28:48
【问题描述】:

我已经在这里尝试了所有我能想到的。

self.navigationBar = [[UINavigationBar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
self.navigationBar.autoresizingMask = UIViewAutoresizingFlexibleWidth;
    self.navigationBar.topItem.title = @"Title";
    self.navigationItem.title = @"Title";
    self.title = @"Title";
    self.navigationBar.topItem.titleView.backgroundColor = [UIColor blueColor];
    self.navigationController.navigationBar.topItem.title = @"Title";
[self.view addSubview:self.navigationBar];

我已经尝试了所有这些,希望其中一个可以工作,但没有一个可以。如何更改此导航栏的标题?这是在 UIViewController 的 init 方法中。

【问题讨论】:

  • 这一切都取决于导航栏的初始化位置。
  • 正如@stavash 所说,您可能需要指定栏的初始化位置。例如,如果它发生在另一个类中,您将不会使用 self,而是使用该类的实例。因此,如果您在其他地方实现了它,它将是 #import SomeClassName 然后在标题 SomeClassName *className;那么...你可以做 className.navigationBar.title = "Title";
  • 顺便说一下,视图在 init 方法中还没有准备好,所以我强烈建议将您决定的任何代码转移到 viewDidLoad。

标签: iphone objective-c ios uiviewcontroller uinavigationbar


【解决方案1】:

您需要设置自定义 NavigationBar 的 items 数组。您应该传入一个数组,其中包含一个具有您指定标题的项目:

UINavigationBar *bar = [[[UINavigationBar alloc] init] autorelease];

UINavigationItem *navItem = [[[UINavigationItem alloc] initWithTitle:@"Title"] autorelease];
bar.items = [NSArray arrayWithObject:navItem];

【讨论】:

    【解决方案2】:

    这对我总是有效的:

    self.navigationItem.title = @"Title";
    

    【讨论】:

      【解决方案3】:

      我不知道你为什么要把它放在init中,通常我宁愿把这段代码放在viewDidLoad中。

      但是,您的代码存在问题的是,当您初始化 UINavigationBar 时,它的 items 数组中没有任何项目。因此,您实际上是在向 nil 发送消息,这不会使您的程序崩溃,但不会执行任何操作。

      这就是我要做的。

      - (void)viewDidLoad
      {
          [super viewDidLoad];
          UINavigationBar *navigationBar = [[UINavigationBar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
          navigationBar.autoresizingMask = UIViewAutoresizingFlexibleWidth;
          [navigationBar setItems:[NSArray arrayWithObject:[[UINavigationItem alloc]initWithTitle:@"Title"]]];
          navigationBar.topItem.titleView.backgroundColor = [UIColor blueColor];
          [self.view addSubview:navigationBar];
      }
      

      【讨论】:

        【解决方案4】:

        如果你使用的是导航控制器,那么

        self.title = @"My Title"; 
        

        应该在 iOS 7 中进行。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-01-17
          • 2011-04-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-09-02
          • 2019-10-28
          相关资源
          最近更新 更多