【问题标题】:UINavigationController back button title inconsistent?UINavigationController后退按钮标题不一致?
【发布时间】:2014-01-31 21:08:30
【问题描述】:

我在我的应用程序中使用了 UINavigationController,但我遇到了后退按钮标题的问题。我以编程方式为我推送到的任何页面设置了标题。在某些页面上,后退按钮将正确显示上一页的标题,但在选择其他页面时,它只会显示“返回”。

我有一个关于推送到新 VC 的基本实现:

- (void)pushToNewVC
{
    NewVC *newVC = [[NewVC alloc] init];
    [self.navigationController pushViewController:newVC animated:YES];
}

在 newVC/所有 myVC 的 viewDidLoad 中,我有 self.title = @"Title"

问题是在某些情况下它可以工作,但在其他情况下只会说“返回”而不是前一页的标题。

【问题讨论】:

    标签: ios uinavigationcontroller


    【解决方案1】:

    我注意到类似的行为,如果后退按钮的标题长度不适合带有推送 VC 标题的导航栏,则后退按钮的标题将回退到 < Back

    在发生不一致行为的 VC 上,尝试将 push VC 的标题设置为较短的单词,以测试并确认是否确实发生了这种情况。希望这会有所帮助。

    【讨论】:

    • 非常感谢!这就是问题所在。在所有导航栏内容不适合的页面上,它只是恢复为“返回”。
    • 此外,如果“
    【解决方案2】:

    设置 self.title = @"Title" 只会设置 UINavigationBar 的标题,而不是返回按钮。使用以下代码设置后退按钮标题:

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

    【讨论】:

    • 后退按钮需要是上一屏的标题。设置 self.title 应该固有地设置 UINavigationController 中的后退按钮标题,但事实并非如此。