backBarButtonItem无法隐藏

时间:2018-11-12 08:52:05

标签: ios swift

此问题出现在ios 9和ios 10上。 当我显示一个navigationviewController时,backBarButtonItem无法隐藏,但是在超类中我对此进行了设置

override func pushViewController(_ viewController: UIViewController, animated: Bool) {
        super.pushViewController(viewController, animated: animated)
        viewController.navigationItem.setHidesBackButton(true, animated: false)
        let backItem = UIBarButtonItem(image: UIImage(named: "navigationItem_back_img"), style: .plain, target: self, action: #selector(backItemOnClick(_:)))
        backItem.title = ""
        viewController.navigationItem.leftBarButtonItem = backItem
    }

enter image description here

当我按下这个NavigationViewController时,我没遇到这个问题

3 个答案:

答案 0 :(得分:3)

将此行 items: [ { label: 'Add New Vehicle', icon: 'fa fa-refresh', command: () => { let user = new User(); this._userService.setter(user); this.router.navigate(['/op']); } }, { label: 'Show All', icon: 'fa fa-repeat', url: '#' } ] 添加到要隐藏后退按钮项的视图控制器的viewDidLoad()中。

答案 1 :(得分:0)

viewDidLoad()viewWillAppear()中添加以下行:

self.navigationItem.hidesBackButton = true

self.navigationItem.setHidesBackButton(true, animated: false)

答案 2 :(得分:0)

我建议使用任何其他技术来显示viewController,而不是将其推入导航控制器中。它会隐藏“后退”按钮,也可以在从主ViewController达到目的后轻松将其关闭。以模态形式使用present或以popover形式出现,然后在工作后将其关闭。 如果您不愿意这样做,那么我认为上述答案将对您有用。但是我对您的问题的建议将以不同的方式呈现视图控制器,这也将有助于保持代码的清洁和更易理解。 如果您想讨论或了解我的方法,请留言。