when editButtonItem clicked, no red delete icon shows
Asked Answered
C

1

8

I am writing an IPhone IM chat window now.

You know if the nagviationItem.rightBarItem in an UITableviewController is set to editButtonItem, you click the edit button then a red delete icon is shown to every single row, like shown here.

The problem is, I have a UIViewController instead of a UITableViewController:

@interface ChatUIViewController : UIViewController<UITableViewDelegate,UITableViewDataSource>{
    UITableView *table;
    UITextField *textField;

}

and i did same to set editButtonItem:

- (void)viewDidLoad {
    [super viewDidLoad];
    self.navigationItem.rightBarButtonItem = self.editButtonItem;

}

when i click the edit button, the red delete icon will not show.

How can I make the red delete icon shown in my ChatUIViewController?

Thanks in advance to anyone who might help. Michael

Comedietta answered 20/1, 2010 at 3:43 Comment(0)
B
39

Add the following method to your table view delegate class:

- (void) setEditing:(BOOL)editing animated:(BOOL)animated {
    [super setEditing:editing animated:animated];
    [self.tableView setEditing:editing animated:animated];
    if (editing) {
        // you might disable other widgets here... (optional)
    } else {
        // re-enable disabled widgets (optional)
    }
}
Beatrizbeattie answered 20/1, 2010 at 4:4 Comment(2)
Thanks a zillion, it worked perfectly. The solution leads another question: Why the above code is not needed in a class that is UITableViewController class, but is needed in a class that subclasses the UIViewController? My intuition tells me the UITableViewController class calls setEditing:animated: under the hood.Comedietta
My opinion is that a table view is not necessarily the only editable view. By making it part of a view controller, one can pass editable calls to any subview (like a table view).Beatrizbeattie

© 2022 - 2024 — McMap. All rights reserved.