添加了UIBarButtonItem,涵盖了UINavigationController后退按钮

时间:2016-11-25 13:13:59

标签: ios swift uinavigationcontroller uinavigationbar uinavigationitem

当我的应用在RTL设备配置上运行时我向UIBarButtonItem添加self.navigationItem.leftBarButtonItem,在LTR设备配置时为self.navigationItem.rightBarButtonItem添加了UIBarButtonItem。 在这两个配置中,添加的let label = UILabel(frame: CGRect(x: 0, y: 0, width: CGFloat(150), height: CGFloat(20))) label.backgroundColor = UIColor.clear label.font = UIFont.systemFont(ofSize: 18.0) label.shadowColor = UIColor(white: 0.0, alpha:0.5) label.textAlignment = NSTextAlignment.center label.textColor = UIColor(hexaValue: ConsColors.albums) label.text = "Just text" label.sizeToFit() if UIApplication.shared.userInterfaceLayoutDirection == UIUserInterfaceLayoutDirection.rightToLeft{ self.navigationItem.leftBarButtonItem = UIBarButtonItem(customView: label) }else{ self.navigationItem.rightBarButtonItem = UIBarButtonItem(customView: label) } 覆盖了后退按钮,这是一个defualt按钮。

这是我的代码:

UIBarButtonItem

我甚至尝试使用普通系统UINavigationcontroller。 还尝试设置UINavigationBar.appearance().semanticContentAttribute = .forceRightToleft 语义内容属性强制RightToLeft或LefttoRight,它们不起作用。

let dic2 = Dictionary<TestStruct2.TestEnum2, TestStruct2>()

我使用Swift 3,Xcode 8.1和iPad Air 2,它的OS版本为9.3.2 有谁知道如何解决它?

非常感谢帮助,谢谢。

2 个答案:

答案 0 :(得分:1)

将此属性设置为

self.navigationItem.leftItemsSupplementBackButton = true

这将确保在后退按钮

之后添加自定义按钮

<强>更新

根据我的理解,您的要求是在对面设置默认后退按钮和自定义按钮。

不需要以下条件
    if UIApplication.shared.userInterfaceLayoutDirection == UIUserInterfaceLayoutDirection.rightToLeft{
        self.navigationItem.leftBarButtonItem = UIBarButtonItem(customView: label)
    }else{
        self.navigationItem.rightBarButtonItem = UIBarButtonItem(customView: label)
    }

将其替换为

self.navigationItem.rightBarButtonItem = UIBarButtonItem(customView: label)

答案 1 :(得分:0)

通过明确设置正确的条形按钮项目,您将覆盖退回按钮。幸运的是,有一种内置方式,你可以有多个左栏按钮项,它甚至比你想象的更简单。而不是设置navigationItem.leftBarButtonItem,而只需设置navigationItem.leftBarButtonItems!这是一个例子:

let backButton = self.navigationItem.leftBarButtonItem
let newButton = UIBarButtonItem(customView: label)
self.navigationItem.leftBarButtonItems = [backButton, newButton]