如何在不影响先前视图的情况下更改 UINavigationBar 标题的名称?

Posted

技术标签:

【中文标题】如何在不影响先前视图的情况下更改 UINavigationBar 标题的名称?【英文标题】:How to change the name of UINavigationBar title without affecting prior views? 【发布时间】:2013-07-21 04:24:52 【问题描述】:

我的应用中有三个视图。

我的主视图控制器(称为“技术数据”)嵌入了一个导航控制器。它还有两个圆形矩形按钮,用于访问我的其他两个视图。

由于我的第二个和第三个视图的名称很长,我的导航栏最终看起来像这样:一个后退按钮,标题为“技术数据”和“视觉规范...”

我决定在我的第二个视图“Visual Specialty”的viewDidLoad 中实现这一点:

self.navigationController.navigationBar.topItem.title = @"Back";

话虽如此,后退按钮现在显示“后退”,并且我的第二个和第三个视图上的导航标题显示完成; “视觉专长”而不是“视觉专长......”

问题是,现在当我返回主视图时,导航栏上的标题已更改为“返回”,因此在初始启动时,主视图的名称为“技术数据”,这是正确的,但是一旦我导航到其中一个视图并返回,它现在的标题是“返回”

您知道解决此问题的好方法吗?

【问题讨论】:

【参考方案1】:

改为在第一个视图控制器的viewDidLoad 方法中使用以下代码:

UIBarButtonItem *backButton = [[UIBarButtonItem alloc]
                                   initWithTitle: @"Back"
                                   style: UIBarButtonItemStyleBordered
                                   target:nil action:nil];
self.navigationItem.backBarButtonItem = backButton;

【讨论】:

我尝试将您的代码添加到我的 viewDidLoad 但根本没有更改后退按钮,它仍然显示“技术专业”,甚至没有“后退”,有什么建议可以解释为什么会这样吗? 也许尝试将其添加到 initWithNibName:bundle: 方法中? 抱歉应该在我尝试之前指定但没有运气:/ @jbums20 这是更改后退按钮标题的正确方法。但是,它需要在第一个控制器上(后面有控制器的那个)......即您的第一个控制器会影响在它之后按下的下一个控制器的“后退”按钮。 (在viewDidLoad方法的第一个控制器上设置) 虽然从技术上讲它仍然可以工作,但把它放在initWithNibName:bundle 方法中并不是很好的做法,因为这是与视图相关的(与初始化控制器本身无关)......相反,把它放在viewDidLoad 方法中。

以上是关于如何在不影响先前视图的情况下更改 UINavigationBar 标题的名称?的主要内容,如果未能解决你的问题,请参考以下文章

在不影响导航栏的情况下更改 NavigationController 的内容视图宽度

如何在不影响背景的情况下更改网页内容?

如何在不影响设备音量的情况下使用 MPMusicPlayerController 更改音量

如何在不影响现有列宽的情况下更改列数据类型

如何在不实际缩放的情况下更改视图缩放值?

如何在不影响未分阶段更改的情况下丢弃 git 中的分阶段更改 [重复]