Swift:编辑模式,将 editButtonItem() 链接到 IBAction
Posted
技术标签:
【中文标题】Swift:编辑模式,将 editButtonItem() 链接到 IBAction【英文标题】:Swift: Edit Mode, link editButtonItem() to IBAction 【发布时间】:2016-05-12 12:40:45 【问题描述】:我了解如何将我的UITableView
设置为编辑模式,以及如何动态创建编辑按钮:
override func viewDidLoad()
tableView.allowsMultipleSelectionDuringEditing = true
tableView.setEditing(false, animated: false)
navigationItem.leftBarButtonItem = editButtonItem()
但是当我点击编辑按钮时,我希望导航栏上出现一个新按钮(即“加号”/“添加”按钮)。为此,我想我需要创建一个IBAction
,但我不知道如何将editButtonItem()
链接到一个动作。有什么想法吗?
【问题讨论】:
只需覆盖setEditing:animated:
并分别添加/删除按钮
【参考方案1】:
好的,非常感谢 Ahmed 和 vadian 的 cmets,但我的工作是这样的:
override func setEditing(editing: Bool, animated: Bool)
// Toggles the edit button state
super.setEditing(editing, animated: animated)
// Toggles the actual editing actions appearing on a table view
tableView.setEditing(editing, animated: true)
if (self.editing)
navigationItem.rightBarButtonItem =
UIBarButtonItem(barButtonSystemItem: .Add, target: self,
action: #selector(clickMe))
else
// we're not in edit mode
let newButton = UIBarButtonItem(title: "", style: UIBarButtonItemStyle.Plain, target: navigationController, action: nil)
navigationItem.rightBarButtonItem = newButton
func clickMe()
print("Button Clicked")
当按下编辑按钮(并从 Edit -> Done 翻转并再次返回)时,IF/ELSE 语句中的代码将执行。
【讨论】:
【参考方案2】:您可以通过将视图控制器中定义的新函数分配给其 action 属性来替换 editButtonItem() 的默认操作。
editButtonItem().action = #selector(yourCustomAction(_:))
func yourCustomAction(sender: UIBarButtonItem)
【讨论】:
感谢您的回复 Ahmed,向您道歉,但您所说的“#selector”是什么意思? 参考这个答案以更好地理解快速选择器:http://***.com/questions/24007650/selector-in-swift 和 https://medium.com/swift-programming/swift-selector-syntax-sugar-81c8a8b10df3#.q25ftjr60 我不推荐这个。这会杀死 editButtonItem 的所有内置功能,并且它不会自行从“编辑”切换到“完成”。绝对像 @alias235 那样覆盖 setEditing 方法以上是关于Swift:编辑模式,将 editButtonItem() 链接到 IBAction的主要内容,如果未能解决你的问题,请参考以下文章
UITableView 处于编辑模式时如何隐藏栏按钮项? (迅速)