UINavigationController后退按钮不可见,但有效

时间:2010-03-21 02:39:06

标签: iphone uinavigationcontroller

我有一个场景,我的UINavigationController缺少后退按钮(左键),但点击左键似乎仍然有效。

我发现此处发布了类似的问题:UINavigationController's back button disappears? 通过不将标题设置为@“”解决了这个问题,但这不是我的问题。是否有任何其他情况会导致此行为?

更新:

如果重要的是我的视图层次结构:我的MainWindow包含一个UINavigationView,它首先加载一个UIViewController(该视图包含一个Map)。当点击注释附件按钮时,它会加载UITableViewController。这个视图应该有后退按钮。

感谢。

4 个答案:

答案 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)
}

这给了我:

UINavigationController custom back button

现在当我点击后退按钮文本时,文本消失了: UINavigationController UINavigationBarButton back button disappears

我确保我遵循了上述所有答案,例如设置标题以确保色调颜色有效等。但是这不起作用。

就我而言,我甚至需要为后退按钮的 highlighted 状态设置属性,如下所示:

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

此后,后退按钮的文字再也没有消失