如何在不影响先前视图的情况下更改 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 的内容视图宽度