我有一个标签栏应用程序,每个标签都有不同的视图。每个视图都有一个 UINavigationBar,在 Interface Builder 上设置了标题。我想根据 ViewDidLoad 方法中的一个子句更改标题,所以如果 x { 更改标题 }。
我试过self.title = @"title"
了,但这会改变标签栏项目本身的标题。
那么,这是如何做到的呢?
我有一个标签栏应用程序,每个标签都有不同的视图。每个视图都有一个 UINavigationBar,在 Interface Builder 上设置了标题。我想根据 ViewDidLoad 方法中的一个子句更改标题,所以如果 x { 更改标题 }。
我试过self.title = @"title"
了,但这会改变标签栏项目本身的标题。
那么,这是如何做到的呢?
我已经使用如下代码以编程方式设置了标题:
navBar.topItem.title = @"title";
其中 navBar 被声明为 IBOutlet UINavigationBar 链接到界面构建器中的导航栏。这在我的应用程序中有效;但是,我没有使用标签栏。
如果 navBar.topItem 是标签栏项目,我看不到您可以更改出现在导航栏上的标题而不更改标签栏项目上的标题的方法,因为导航栏的 topItem 和标签栏项目是同一个对象。
采用
self.navigationItem.title = @"the title";
因为设置navBar.topItem.title
并非在所有情况下都有效。
用这个 :
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
如果该类是 UIViewController 类型,那么您可以按照 viewDidLoad 方法中的给定设置标题。
[self setTitle:@"My Title"];
在 ViewController.m 的 ViewDidLoad 中只写,
self.navigationItem.title=@"Hello World";
这是输出:
创建IBOutlet
的UINavigationBar
navigationBar.topItem.title = @"Title";
希望这可以帮助。
我使用了以下内容:
self.navigationController.navigationBar.topItem.title = @"Title";
但是,我还必须在调度块中调用它,因为在没有它的 viewDidLoad 中调用它时它不会更改标题。
请注意,为了让标题全部显示,导航控制器的委托必须设置为导航栏本身,否则标题将永远不会显示!
您也可以使用在 ViewController 或 TableViewController 下的 ViewDidLoad 中设置标题
_title = @"Title";
或者
self.title = @"Title";
我在 Swift 5 中实现了这种方式
override func viewDidLoad() {
super.viewDidLoad()
navigationItem.title = "Title"
}
试试这个,
self.navigationItem.title = @"Your title";