UITableView Edit/Done Button
Here is a Swift version I used:
override func setEditing(editing: Bool, animated: Bool) {
super.setEditing(editing, animated: animated)
if editing {
} else {
}
}
The button stops committing the changes to your controller class once you override it's default action with self.editButtonItem.action = @selector(editClicked:);
What you should do is override UIViewController's setEditing method in your own controller class:
- (void)setEditing:(BOOL)editing animated:(BOOL)animated
{
[super setEditing:editing animated:animated];
if(editing == YES)
{
// Your code for entering edit mode goes here
} else {
// Your code for exiting edit mode goes here
}
}
You also need to set your UIBarButtonItem to "Edit" in storyboard or if you prefer doing it in code use the following:
- (void)viewDidLoad {
[super viewDidLoad];
self.navigationItem.rightBarButtonItem = self.editButtonItem;
}
editButtonItem is a helper property already set by the system for your comfort.
thats what i did on Swift 4:
this is create bar button in viewDidLoad():
// init barbutton and set default to true
self.navigationItem.rightBarButtonItem = self.editButtonItem
super.isEditing = true
add override setEditing() below the viewDidLoad():
override func setEditing (_ editing:Bool, animated:Bool)
{
super.setEditing(editing,animated:animated)
if(self.isEditing)
{
self.editButtonItem.title = "Edit"
}else
{
self.editButtonItem.title = "Done"
}
}