我有一个场景,我的UINavigationController缺少后退按钮(左键),但点击左键似乎仍然有效。
我发现此处发布了类似的问题:UINavigationController's back button disappears? 通过不将标题设置为@“”解决了这个问题,但这不是我的问题。是否有任何其他情况会导致此行为?
更新:
如果重要的是我的视图层次结构:我的MainWindow包含一个UINavigationView,它首先加载一个UIViewController(该视图包含一个Map)。当点击注释附件按钮时,它会加载UITableViewController。这个视图应该有后退按钮。
感谢。
答案 0 :(得分:14)
哦,伙计!好的,我在这里找到了答案: http://www.iphonedevsdk.com/forum/iphone-sdk-development/35633-back-button-missing-navigation-bar.html
事实证明我的第一个视图(带有地图的视图)没有标题集(实际上我隐藏了导航栏,因为我不想显示它)。即使标题WAS在稍后的视图中设置,SDK似乎也不在乎。我仍然不明白100%为什么我可以利用这个区域让它发挥作用。
所以即使我隐藏了第一个导航栏,我仍然需要设置它的标题。
那就做到了!
感谢所有试图提供帮助的人。
答案 1 :(得分:0)
您是否在代码中的任何位置覆盖了后退按钮项目 - 与左侧按钮不同?即:
self.navigationItem.backBarButtonItem = ...
您是否在任何地方设置hidesBackButton
属性?即:
self.navigationItem.hidesBackButton = YES;
答案 2 :(得分:0)
除了上面提供的建议。 更改导航栏的外观还会使“后退”按钮不可见。
UINavigationBar.appearance().tintColor = UIColor.white
验证是否未将这种色彩设置为与背景混合的颜色。
答案 3 :(得分:0)
我遇到了类似(虽然不完全相同)的情况,自定义后退按钮文本消失,但可以看到箭头UINavigationController custom back button disappears from NavigationBar
因此,如果有人遇到类似情况,自定义后退按钮上的后退按钮文本消失,这是我的方案和解决方法。
我在自定义 NavigationController 类中自定义了后退按钮,如下所示:
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)
}
这给了我:
我确保我遵循了上述所有答案,例如设置标题以确保色调颜色有效等。但是这不起作用。
就我而言,我甚至需要为后退按钮的 highlighted
状态设置属性,如下所示:
UIBarButtonItem.appearance().setTitleTextAttributes([
NSAttributedString.Key.foregroundColor: UIColor.panoStoryYellow,
NSAttributedString.Key.font: UIFont(name: "Montserrat-SemiBold", size: 15)!
], for: .highlighted)
此后,后退按钮的文字再也没有消失