【发布时间】:2020-05-12 21:44:11
【问题描述】:
仅当显示特定的 ViewController 时,我才想附加 rightBarButtonItem
@IBAction func addView1(_ sender: UIButton) {
addSubViewController(withStoryboardId: "View1", beginningAtX: sender.frame.origin.x)
let barButton = UIBarButtonItem(title: "Title", style: .plain, target: self, action: nil)
documentFilter.tintColor = .white
self.navigationItem.rightBarButtonItems?.append(barButton)
}
当显示另一个 ViewController 时,我想再次删除它:
@IBAction func addView2(_ sender: UIButton) {
addSubViewController(withStoryboardId: "View2", beginningAtX: sender.frame.origin.x)
self.navigationItem.rightBarButtonItems?.remove(at: 2)
}
这会删除 barButtonItem,但是当我再次选择它时,它会崩溃,因为索引 2 处不再有按钮。我对我的 tabBarItems 做了一些熟悉的事情,在那里我检查了项目的数量:
if (self.toolbarItems?.count ?? 0) > 0 {
toolbarItems?.remove(at: 0)
}
我将如何实现这一目标?
我已经尝试在我的 View2 中实现 viewWillAppear(),但该按钮未添加到 rightBarButtonItems
数组中override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
let barBtn = UIBarButtonItem(title: "Title", style: .plain, target: self, action: nil)
self.navigationItem.rightBarButtonItems?.append(barBtn)
}
【问题讨论】:
-
我不太明白你的问题,但据我所知,navigationItem.rightBarButtonItems 是一个数组,你可以检查它的计数以及索引 2 处的元素是否存在。