【问题标题】:iOS Custom Navigation bar back button title disappears on tappingiOS自定义导航栏后退按钮标题在点击时消失
【发布时间】:2021-09-09 21:30:12
【问题描述】:

你好 StackOverflow 社区,

我有一个相当奇怪的案例,我的导航控制器导航栏上的自定义后退按钮在交互时消失了。

一些额外的信息是我的代码没有使用 Storyboard 并且我使用 UIKit - 包括 UI 在内的所有内容都是以编程方式构建的。

这是我的设置:

  • 我首先创建一个自定义 UINavigationController 子类来抽象出我所有与导航控制器相关的自定义项

  • 在这个子类中,我有这个方法被调用来自定义我的后退按钮的外观

private func customizeBackButton() {
    let backImage = UIImage(named: "BackButton")?.withRenderingMode(.alwaysOriginal)
    navigationBar.backIndicatorImage = backImage
    navigationBar.backIndicatorTransitionMaskImage = backImage
    
    UIBarButtonItem.appearance().setTitleTextAttributes([
      NSAttributedString.Key.foregroundColor: UIColor.panoStoryYellow,
      NSAttributedString.Key.font: UIFont(name: "Montserrat-SemiBold", size: 15)!
    ], for: .normal)
}
  • 上面的自定义给出了以下结果,这是我希望以 Gallery 为上一个屏幕的标题的结果

  • 当我点击箭头所在的后退按钮的最左边缘时,该按钮正常工作。但是,如果我点击后退按钮的标签部分(即图库文本所在的位置),文本就会消失并让用户保持在同一屏幕上。

当我在标签消失后点击后退箭头时,它可以工作并带我回到上一个屏幕,但是,为什么会出现这种消失?

我尝试了什么 我尝试了很多关于堆栈溢出的建议,例如:

  • 确保我的代码中没有一行明确隐藏后退按钮
  • 随时检查上一个屏幕的标题是否为空字符串

我可以确认这些不是问题,因为我有一个有效的标题并且从不隐藏后退按钮。

以下是我在确定它们都不适合我的案例之前检查过的一些资源,我在这里提出了问题:

UINavigationController Back Button not visible, but works

UINavigationController's back button disappears?

Navigation title disappears after use of custom back button

navigation title on previous screen disappear when back button pressed

Missing Navigation's or Back Button's Title When Push ViewControllers in Succession

关于为什么这个后退按钮文本消失的任何想法?

【问题讨论】:

  • 设置navigationBar的tint color有帮助吗?
  • 感谢@Mr.SwiftOak 的想法 - 但是,结果仍然相同

标签: ios swift uinavigationcontroller uikit uibarbuttonitem


【解决方案1】:

所以经过大量的反复试验,这似乎对我有用。

我什至需要指定highlighted 状态的属性。

UIBarButtonItem.appearance().setTitleTextAttributes([
      NSAttributedString.Key.foregroundColor: UIColor.panoStoryYellow,
      NSAttributedString.Key.font: UIFont(name: "Montserrat-SemiBold", size: 15)!
], for: .highlighted)

在此之后,文本从未消失,一切都按预期工作。

我暂时不将此标记为答案,因为也许有人有更好的“正确”方法来做到这一点。

无论如何,如果其他人可能面临类似的情况,我将把这个答案放在这里。

【讨论】:

    猜你喜欢
    • 2020-01-07
    • 1970-01-01
    • 2014-11-03
    • 1970-01-01
    • 1970-01-01
    • 2016-04-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-03
    相关资源
    最近更新 更多