我有一个标签栏应用程序,每个标签上都有不同的视图。每个视图都有一个UINavigationBar,其标题在Interface Builder上设置。我想根据ViewDidLoad方法中的子句更改标题,所以如果x {更改标题}。
我尝试了self.title = @"title"
,但这会更改标签栏项目的标题。
那么,这是怎么做到的?
答案 0 :(得分:198)
我使用类似的代码以编程方式设置标题:
navBar.topItem.title = @"title";
其中navBar被声明为链接到界面构建器中导航栏的IBOutlet UINavigationBar。这在我的应用程序中有效;但是,我没有使用标签栏。
如果navBar.topItem是标签栏项目,我没有看到一种方法可以更改导航栏上显示的标题而不更改标签栏项目上的标题,因为navBar的topItem和标签bar项目是同一个对象。
答案 1 :(得分:70)
使用
self.navigationItem.title = @"the title";
因为设置navBar.topItem.title
在所有情况下都不起作用。
答案 2 :(得分:25)
使用此:
CGRect navBarFrame = CGRectMake(0, 0, self.tableView.frame.size.width, 44.0);
UINavigationBar *navBar = [[UINavigationBar alloc] initWithFrame:navBarFrame];
UINavigationItem *navItem = [UINavigationItem alloc];
navItem.title = @"Your Title";
[navBar pushNavigationItem:navItem animated:false];
[self.view addSubView:navBar];
或
self.tableView.tableHeaderView = navBar; etc
答案 3 :(得分:11)
如果类是一种UIViewController,那么你可以在viewDidLoad方法中设置title。
[self setTitle:@"My Title"];
答案 4 :(得分:6)
创建IBOutlet
UINavigationBar
navigationBar.topItem.title = @"Title";
希望这有帮助。
答案 5 :(得分:6)
在ViewController.m的ViewDidLoad中写一下,
self.navigationItem.title=@"Hello World";
这是输出:
答案 6 :(得分:2)
我使用了以下内容:
self.navigationController.navigationBar.topItem.title = @"Title";
但是,我还必须在调度块中调用它,因为在viewDidLoad中调用它时它不会改变标题。
答案 7 :(得分:2)
请注意,为了让标题显示AT ALL,导航控制器的委托必须设置为导航栏本身,否则标题永远不会显示!
答案 8 :(得分:1)
您也可以使用
在ViewController或TableViewController下的ViewDidLoad中设置标题_title = @"Title";
或
self.title = @"Title";
答案 9 :(得分:0)
试试这个,
self.navigationItem.title = @"Your title";
答案 10 :(得分:0)
我在Swift 5中实现了这种方式
override func viewDidLoad() {
super.viewDidLoad()
navigationItem.title = "Title"
}