why does my UITableView not appear to start in editing = YES mode when initialized?
I have a UITableViewController subclass. I set self.editing = YES at the end of the viewDidLoad method, but when the table is displayed the little red 'delete' icon does not appear next to each row.
Then, I added an edit button to the navigation item:
self.navigationItem.rightBarButtonItem = self.editButtonItem;
When I launch the application now, it starts in edit mode (I can tell because the edit button says 'done') but, again, the delete icons don't appear. Then if I toggle it with the edit button twice (once to turn it off, then once to turn it on), the red delete icons appear.
So, my question is: why aren't the table cells displaying correctly when first displayed? I've tried moving the self.editing = YES l开发者_如何学Goine to other places in the code, like in the init function or the viewWillAppear function, but no dice. It seems like this is a result of funny ordering somewhere (e.g. table cells initialized before editing is set, or something), but I can't figure it out; running the debugger shows that the viewDidLoad call happens before cellForRowAtIndexPath, as one would expect.
Other notes:
- Yes, I am having
editingStyleForRowAtIndexPathreturnUITableViewCellEditingStyleDelete. But from debugging I've verified that that function is not even called after the first load. (It gets called after I toggle editing mode twice.)
d'oh, adding it in viewDidAppear (or, better: viewWillAppear) did the trick. Thanks @lukya and @willcodejavaforfood for suggestions.
I feel silly. I swear I thought I'd checked that.
Moral of the story: setting the editing property too early makes page elements not display in editing mode. (Doesn't that seem like a bug?)
Try using the
- (void)setEditing:(BOOL)editing animated:(BOOL)animate
method in UITableView
加载中,请稍侯......
精彩评论