سؤال

I have a simple table view that can segue to an update-view-contoller to edit that row when the user taps on a row. Issue: I would like to segue to the update-view-contoller when the table view is in "edit-mode", otherwise nothing should happen.

I am using Storyboard to create the segue linking the prototype cell to the update-view-controller.

Any idea on how to make the segue work only if the table view is in "edit-mode"?

Here is my prepare for segue code that is invoked when the user taps on a row from the table view contoller. My segue has an identerfied called "ShowUpdate":

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {

    if ([[segue identifier] isEqualToString:@"ShowUpdate"]) {

        UpdateViewController *updateviewcontroller = [segue destinationViewController];

        NSIndexPath *myIndexPath = [self.tableView indexPathForSelectedRow];

        int row = [myIndexPath row];

        NSString *selectedRow = [NSString stringWithFormat:@"%d", row];

        updateviewcontroller.DetailModal = @[_Title[row], _Description[row], selectedRow];

    }

}

Thanks for any help

هل كانت مفيدة؟

المحلول

How about a simple if check for isEditing property of the tableView?

@property(nonatomic, getter=isEditing) BOOL editing

Instead of making a segue from a prototype cell, I would drag it from the ViewController itself, and then check the above property in the didSelectRowAtIndexPath: delegate method and perform the segue in code from there.

Plus, you would need to set allowSelectionDuringEditing property somewhere in viewDidLoad or so.

self.tableView.allowsSelectionDuringEditing = YES;

Code:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (self.tableView.isEditing) {

    UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath];
    [self performSegueWithIdentifier:@"ShowUpdate" sender:cell];
    }
}

Segue construction:

enter image description here

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top