【问题标题】:Avoid showing "back" for back button when navigation title is long in Swift当导航标题在 Swift 中很长时,避免为后退按钮显示“后退”
【发布时间】:2019-12-05 07:06:35
【问题描述】:

我的项目中有一个导航,我想将其配置为导航返回项。
第一种情况:当UINavigation title较长时,返回按钮的标题设置为“返回”

将返回按钮标题替换为“返回”

第二种情况:当它更长时,这个“后面”不会显示出来。

删除后退按钮标题,只显示后退图标

但我也想在第一种情况下只显示后退图标。

【问题讨论】:

  • 所以基本上你只想在两种情况下都显示后退箭头,对吧?
  • @Mamta 正是我想这样做。

标签: swift uinavigationbar


【解决方案1】:

Swift 3 - 通过故事板:

要使导航栏后退按钮只有后退箭头而没有“后退”文字,请按照以下步骤操作:

转到根视图控制器的导航栏(下面截图中标题为“Home”)

转到其属性检查器。如下图设置后退按钮为空格:

就是这样!!

这是模拟器截图:

希望对你有帮助!

【讨论】:

  • 谢谢。但我想在代码中执行此操作并在导航标题不长时显示标题。
  • @Bita 请正确重构您的问题。您正在写的某些地方在两种情况下都只需要后退箭头,而在 cmets 中您写了一个矛盾的陈述。
  • 我有 xib 文件而不是故事板。我找不到后退按钮的这个属性。
  • @Bita 我无法为您提供有关 xib 的帮助。我从来没有工作过
【解决方案2】:

将这个添加到 ViewController 的 viewDidLoad 中,它正在推送下一个 ViewController (View Controller Linguini Arabbiatta)

navigationItem.backBarButtonItem = UIBarButtonItem(title: "", style: .plain, target: nil, action: nil)

它将在从该视图控制器推送的所有视图控制器中仅显示一个后退图标。

【讨论】:

  • 我想在导航标题不长时显示后退按钮的标题。但在所有情况下,您的答案都是隐藏后退按钮的标题。
【解决方案3】:

试试这个代码

if let title = self.navigationController?.navigationBar.backItem?.title {

    if title.characters.count > 5 {
        self.navigationController?.navigationBar.backItem?.title = "Anything Else"
    }
}

【讨论】:

  • 为什么是 5 个字符?
  • @Bita : 方明刚刚给出了解决方案,您可以根据需要在条件中添加任何数字。
  • 如果您想使用此解决方法,您应该注意,如果您以不同的语言使用您的应用程序,“back”将被翻译,因此 5 可能不适用于您的所有翻译。您需要检查标题是否是预期的控制器标题并将其设置为 "" 否则
【解决方案4】:

这里是 Objective-C

[self.navigationItem setHidesBackButton:YES];

这是斯威夫特

self.navigationItem.setHidesBackButton(true, animated:true);

编辑:如果你只想删除文本,那么这里是 Objective-C

[self.navigationItem.title = @""];

这是斯威夫特

self.navigationItem.title = ""

然后你需要刷新导航栏

self.navigationController?.navigationBar.setNeedsLayout()
self.navigationController?.navigationBar.setNeedsDisplay()

【讨论】:

  • 这完全隐藏了后退按钮箭头及其文本,因此不是问题的答案。
  • 请正确阅读问题。此解决方案将完全隐藏后退按钮,而不仅仅是删除文本。
猜你喜欢
  • 2017-11-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-20
相关资源
最近更新 更多