【发布时间】: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