我正在为UINavigationItem(rightBarButtonItem)实现一个非常标准的选择按钮。我正在进行的方式是在viewDidLoad函数中实例化它。我将选择器作为动作传递,然后将该选择器函数写入viewDidLoad函数之外。
明显的问题是,导航选择按钮不再在选择器功能的范围内,所以我无法参考和使用它。
必须有很多方法来实现“选择”导航按钮。我希望它像集合视图中的开关一样,因此我只能在选择按钮被击中时选择并突出显示集合视图单元格。为此,我的选择器操作将打开和关闭myButton.selected布尔值,就像一个开关(所以我不认为我需要一个UISwitch)。
足够的解释,这是代码;
class GalleryViewController: UIViewController {
@IBOutlet var collectionView: UICollectionView!
....
override func viewDidLoad() {
super.viewDidLoad()
...
//MARK: Select button
let mySelector: Selector = #selector(GalleryViewController.selectSelector)
let selectButton: UIBarButtonItem = UIBarButtonItem(title: "Select", style: UIBarButtonItemStyle.Plain, target: self, action: mySelector)
self.navigationItem.rightBarButtonItem = selectButton
}
//MARK: Select Button Function
func selectSelector() {
//Toggle selectButton ON/OFF here, and more
}
如果你有一个很好的方法来创建一个navigationBar barButtonItem来切换collectionViewCells的状态,我很乐意听到它!只是提供一个完整的答案,不要假设我知道多少(仍然觉得我在Xcode中面对)
答案 0 :(得分:0)
你有几个选择;您可以在属性中存储对UIBarButtonItem
的引用而不是局部变量,以便您可以在动作处理函数中使用它,或者您可以从self.navigationItem.rightBarButtonItem
获取引用,但最简单的方法是只是为了利用UIBarButtonItem
将被传递给你的动作处理函数的事实:
func selectSelector(sender: UIBarButtonItem) {
//Toggle selectButton ON/OFF here, and more
}