2017-10-18 63 views
1

我有一个带有4个子视图控制器的标签栏控制器。每当用户切换标签栏时,右上角的导航项目都应该改变。除了一种情况(用户从第三个标签开始)之外,他们会进行更改。用户切换标签栏后项目未更新项目

enter image description here

我必须承认,我改变了标签栏控制器的导航栏的导航项目。我没有使用四个不同的导航控制器+视图控制器。

// called in viewWillAppear 
internal func setupNavigationBar() { 
    title = "Meeting" 

    if let tabBarVC = parent as? ProjectTabBarController { 
     tabBarVC.navigationItem.leftBarButtonItems = nil 
     tabBarVC.navigationItem.rightBarButtonItems = nil 

     tabBarVC.navigationItem.rightBarButtonItem = UIBarButtonItem(barButtonSystemItem: .add, target: self, action: #selector(didTapCreateMeeting)) 
    } 
} 

回答

2

使用此代码隐藏barButtonItems代替:

self.navigationItem.setLeftBarButton(nil, animated: true) 
self.navigationItem.setRightBarButton(nil, animated: true) 

然后重新设置,做任何you'd喜欢做的,并确保这些设置在viewDidAppear,以确保您的视图已更新

+0

似乎没有进行任何更改。我把这段代码放在我的视图控制器超类(viewWillAppear方法)中。我也尝试过'self.tabBarController.navigationItem' – Cesare

+0

使用你的'viewDidAppear'来确保你的视图更新@Cesare –

+0

如果你可以用你的最新评论更新你的答案,我可以接受它@Rashwan – Cesare