Swift:编辑模式,将editButtonItem()链接到IBAction

时间:2016-05-12 12:40:45

标签: ios swift uitableview cocoa-touch

我了解如何将UITableView设置为编辑模式,以及如何动态创建编辑按钮:

override func viewDidLoad() {
    tableView.allowsMultipleSelectionDuringEditing = true
    tableView.setEditing(false, animated: false)
    navigationItem.leftBarButtonItem = editButtonItem()
}

但是当我点击编辑按钮时,我想在导航栏上显示一个新按钮(即'加上' /'添加'按钮)。要做到这一点,我想我需要创建一个IBAction,但我不知道如何将editButtonItem()链接到一个动作。有什么想法吗?

2 个答案:

答案 0 :(得分:2)

好的,非常感谢Ahmed和vadian的评论,但我的工作是:

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 - >翻转并再次返回)时,将执行IF / ELSE语句中的代码。

答案 1 :(得分:1)

您可以通过将视图控制器中定义的新函数指定给其action属性来替换editButtonItem()的默认操作。

editButtonItem().action = #selector(yourCustomAction(_:))

func yourCustomAction(sender: UIBarButtonItem) {}