views:

275

answers:

3

Hi

I have a UITableViewController where the user should be able to edit the items. In order to enable editing i use this :

self.navigationItem.rightBarButtonItem = self.editButtonItem;

And for everyone, how does not know where self.editButtonItem comes from, it is predefined by the SDK.

So, now when I press on any item, this method is called :

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 

but as soon as I hit the edit button and while editing is active, this method does not seemed to be called.

Any idea what I missing ?

This is the rest of the code that is related to editing :

// Override to support conditional editing of the table view.
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath 
{
    // Return NO if you do not want the specified item to be editable.
    return YES;
}

- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath 
{
    return UITableViewCellEditingStyleNone;
}


- (BOOL)tableView:(UITableView *)tableView shouldIndentWhileEditingRowAtIndexPath:(NSIndexPath *)indexPath 
{
    return NO;
}

Thanks for the help.

mcb

+3  A: 

You gotta set the allowsSelectionDuringEditing property of UITableView to true...here is a reference UITableView ref

Daniel
Thats exactly what I was missing, Thanks
elementsense
A: 

Hello:)

Do you set the self.editing = YES when the edit button is tapped?

When in editing mode this method is called, instead of didSelectRow when you tap a row:

tableView:commitEditingStyle:forRowAtIndexPath:.
RickiG
im not sure if your claim is true, commitediting gets caleld when u actually delete or edit the cell...read my answer, thats the way to get didSelectRow call backs whil editing
Daniel
Hi, you are of course completely right! I wasn't paying attention :/ sorry.
RickiG
A: 

but as soon as I hit the edit button and while editing is active, this method does not seemed to be called.

Any idea what I missing ?

Yes. You are expecting tableView:didSelectRowAtIndexPath: to be called when a button in your nav bar is tapped. This will never happen. That method is only called when a row is selected.

When the edit button is tapped, you will want to put your table into editing mode. In your view controller:

- (void)setEditing:(BOOL)editing animated:(BOOL)animated
{
    [super setEditing:editing animated:animated]; // must be called first according to Apple docs

    [self.tableView setEditing:editing animated:animated];
}

Then you handle editing events by adding a tableView:commitEditingStyle:forRowAtIndexPath: method.

Shaggy Frog
He is asking why isnt didSelectRow is not called while he is editing, he is not expecting it to occur when he taps edit
Daniel
@Daniel If you look closely, you'll see that I answered the question as it was posed.
Shaggy Frog