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

我的应用中有三个视图。

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

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

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

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

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

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

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

【问题讨论】:

    标签: ios objective-c uinavigationcontroller uinavigationbar


    【解决方案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 方法中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多