启用滑动以删除仅在选择了某个段时

时间:2015-01-04 06:36:30

标签: ios objective-c uitableview edit swipe

我只想在segmentedcontrol.segmentindex == 7时显示单元格。

使用以下代码,无论选择的段是什么,每个单元格都是"刷卡可删除"默认情况下。

我有一个if语句来检查所选的段,但它似乎没有改变结果。

我还尝试过在启用编辑之前检查索引路径的其他解决方案,但没有任何好运。

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
    editingStyle = UITableViewCellEditingStyleNone;

    if(!_segmentedControl.selectedSegmentIndex == 7){
        NSLog(@"%ld",(long)_segmentedControl.selectedSegmentIndex);
        editingStyle = UITableViewCellEditingStyleNone;
    }

    if (editingStyle == UITableViewCellEditingStyleDelete) {
        _MyTeamArray = [NSMutableArray arrayWithArray:[[NSUserDefaults standardUserDefaults] objectForKey:@"myTeam"]];

        [_MyTeamArray removeObjectAtIndex:indexPath.row];
        [tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];

        NSLog(@" Pre-remove %@",_MyTeamArray);

        [[NSUserDefaults standardUserDefaults] setObject:_MyTeamArray forKey:@"myTeam"];
    } else {
        NSLog(@"Unhandled editing style! %ld", editingStyle);
    }
}

2 个答案:

答案 0 :(得分:0)

这个怎么样?

- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
{
    if(segmentedControl.selectedSegmentIndex == 7)
        return YES;
    else
        return NO;
}

答案 1 :(得分:0)

将我的评论更改为答案:

您可能希望使用- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath的{​​{1}}功能。您可能只需要以下实现(前提是没有比您提供的更复杂的逻辑。

UITableViewDataSource