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 处于编辑模式时如何隐藏栏按钮项? (迅速)

在编辑模式下删除表格行上的删除按钮⛔️

Xcode swift - 背景模式 - 锁定时AVPlayer中的音频

在 Swift 中自动重新排序核心数据

Swift 编辑 plist 数组

自定义 UITableViewCell 编辑模式不起作用