如何更改缩短的后退按钮标题?

Posted

技术标签:

【中文标题】如何更改缩短的后退按钮标题?【英文标题】:How to change shortened back button title? 【发布时间】:2016-04-07 16:26:49 【问题描述】:

所以我们知道,如果新的视图控制器被推送到导航控制器的堆栈,UINavigationController 会自动显示返回按钮。如果在前一个视图控制器中没有设置标题,后退按钮显示默认的“后退”标题。如果我在前一个视图控制器中设置标题,后退按钮会显示该标题。看起来是这样的:

虽然有时,如果该标题太长,后退按钮标题会更改为默认的“后退”。然后看起来像这样:

这是预期的行为,我很好。 问题是我的应用程序已本地化为 3 种不同的语言。我手动本地化所有控制器的标题,所以当完整的标题显示在后退按钮中时,一切都很好。 当(本地化)标题太长并且它被替换为默认“返回”标题时会出现问题,该标题是英语(或默认语言,在 ios 设置中指定)而不是我的应用程序当前显示的语言。 所以我的问题是如何仅在前一个控制器的标题太长时手动设置返回按钮标题? 我应该补充一点,我尝试像这样替换默认的后退按钮:

this.NavigationItem.BackBarButtonItem = new UIBarButtonItem (localizedBackTitle, UIBarButtonItemStyle.Plain, null);

它工作正常,但后退按钮标题变为“静态”并且永远不会显示前一个控制器的标题。

【问题讨论】:

如果在您的应用正确设置本地化时 iOS 没有正确本地化后退按钮的“后退”标签,我会向 Apple 提交错误报告。包括一个演示问题的示例应用程序。 bugreport.apple.com @rmaddy iOS 正在正确本地化“返回”标签。问题是用户在其设置应用程序中设置的默认语言可能与我的应用程序中的语言不同。我显示用户可以在我自己的应用程序中更改语言的屏幕。这是我的要求。 不一样。您没有使用标准本地化,所以这不是一个错误。 @rmaddy 是的,我知道它的预期行为。我只想在缩短后替换按钮的默认标题。 嗨!我面临同样的问题。有没有找到好的解决方案? 【参考方案1】:

iOS 为过长的后备文本提供本地化。你只需要告诉iOS你支持这样的语言:

<key>CFBundleLocalizations</key>
   <array>
     <string>en</string>
     <string>ja</string>
   </array>

另请参阅: How to change UITabBarController More button's title?

【讨论】:

这句话,但问题是我正在使用自定义本地化,即 iOS 设置设置为,比如说,英语,但我在自己的 UI 中有自定义菜单,允许用户选择不同的语言.

以上是关于如何更改缩短的后退按钮标题?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 appdelegate 上更改后退按钮的文本

如何在渲染后更改后退按钮上的文本

如何防止 UINavigationController 更改 pushViewController 上的后退按钮:

更改导航栏后退按钮的粗细

如何更改 iOS 上后退按钮的位置?

如何在反应导航中更改后退按钮路线