【发布时间】:2017-03-19 19:19:21
【问题描述】:
我在 Swift 3.0 中创建了一个带有 5 个选项卡的自定义 UITabBarController。我一直在尝试为某些选项卡设置不同的导航栏项目,但效果不佳。
情况:我在每个选项卡的 viewDidLoad() 中放置了可以更改导航栏按钮的代码。
//The customized Tab Bar controller instance. Contained in each of the tabs.
var mainController: TabBarController?
override func viewDidLoad() {
// ... more code
setupNavBar()
// ... more code
}
func setupNavBar() {
// ... more code
mainController?.navigationItem.leftBarButtonItem = UIBarButtonItem(image: friendsImage, style: .plain, target: self, action: #selector(handleFindFriends))
// ... more code
}
问题:假设 Tab #1 应该有 NavBarButton A,而 Tab #2 应该有 NavBarButton B。 当我从 Tab #1 切换到 Tab #2 时,代码工作正常; NavBarButton 从 A 变为 B。 但是,当我单击 Tab #1 时,NavBarButton 仍然是 B。
我怎样才能使导航栏按钮即使在我单击之前所在的选项卡时也会相应地发生变化?
【问题讨论】:
-
让我们为每个 Tab 创建一个 TabBarController 和 (NavigationController > ViewController)。所以你可以为每个 ViewController 添加 barButtonItem。
-
我已将代码添加到我的答案中,请看一下。
标签: ios swift tabs navigationbar tabbar