2016-05-12 66 views
1

我知道如何设置我的UITableView进入编辑模式,以及如何动态创建一个编辑按钮:斯威夫特:编辑模式,链接editButtonItem()来IBAction为

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

但是当我点击编辑按钮,我想要一个新的按钮出现在导航栏上(即“加号”/“添加”按钮)。为此,我想我需要创建一个IBAction,但我不知道如何将editButtonItem()链接到一个操作。有任何想法吗?

+0

刚刚覆盖'setEditing:animated:'并分别添加/删除按钮 – vadian

回答

2

好,非常感谢艾哈迈德和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") 
} 

当编辑按钮被按下(和编辑翻转 - >完成和回再次)IF/ELSE语句中的代码将执行。

0

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

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

func yourCustomAction(sender: UIBarButtonItem) {} 
+0

感谢您的回复Ahmed,表示歉意,但是您说'#selector'是什么意思? – alias235

+0

参考此答案更好地理解swift选择器:[http://stackoverflow.com/questions/24007650/selector-in-swift](http://stackoverflow.com/questions/24007650/selector-in-swift)和[https://medium.com/swift-programming/swift-selector-syntax-sugar-81c8a8b10df3#.q25ftjr60](https://medium.com/swift-programming/swift-selector-syntax-sugar-81c8a8b10df3#。 q25ftjr60) –

+0

我不会推荐这个。这会杀死editButtonItem的所有内置功能,并且不会从“编辑”切换到“完成”。绝对重写像@ alias235那样的setEditing方法 – Trev14