开发者

UITableViewCell swiped but delete button doesn't appear

This is odd. I'm right swiping a UITableViewCell in the iPad simulator. Even though the event below fires and the swipedCell is not nil, the Delete button doesn't appear. Actually, it appears-but only sometimes. I never get a bad access or a sigbart.

Here's the code:

- (void)handleSwipeFrom:(UISwipeGestureRecognizer *)recognizer 
{   
    if (userListSwipeRightRecognizer.state == UIGestureRecognizerStateEnded) {
        CGPoint swipeLocation = [userListSwipeRightRecognizer locationInView:self.outletView];
        NSIndexPath *swipedIndexPath = [self.outletView indexPathForRowAtPoint:swipeLocation];
       开发者_StackOverflow UITableViewCell* swipedCell = [self.outletView cellForRowAtIndexPath:swipedIndexPath];
        [swipedCell setEditing:YES];

    }   
}

Is this just a simulator issue or am I doing something wrong?


If you simply want to enable swipe-to-delete on your table, there is a much easier way to do it. Implement tableView:commitEditingStyle:forRowAtIndexPath: in your data source and the table view will automatically show the delete button when a cell is swiped.

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
    [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
}


If you defined your UITableView in your header, then try:

 swipedCell = [self.outletView cellForRowAtIndexPath:swipedIndexPath];


If you use a custom cell and override setEditing, you must call the super method or your delete controls will not be drawn.

- (void)setEditing:(BOOL)editing animated:(BOOL)animated {
    [super setEditing:editing animated:animated];
}
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜