Ios 仅当选择了某个段时才启用滑动删除
我只希望在segmentedcontrol.segmentindex==7时显示单元格 使用下面的代码,默认情况下,无论选定的段是什么,每个单元格都是“滑动删除” 我有一个if语句来检查所选的段,但它似乎没有改变结果 我也尝试过在启用编辑之前检查indexpath的其他解决方案,但这些都没有成功Ios 仅当选择了某个段时才启用滑动删除,ios,objective-c,uitableview,edit,swipe,Ios,Objective C,Uitableview,Edit,Swipe,我只希望在segmentedcontrol.segmentindex==7时显示单元格 使用下面的代码,默认情况下,无论选定的段是什么,每个单元格都是“滑动删除” 我有一个if语句来检查所选的段,但它似乎没有改变结果 我也尝试过在启用编辑之前检查indexpath的其他解决方案,但这些都没有成功 - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingSty
- (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);
}
}
这个怎么样
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
{
if(segmentedControl.selectedSegmentIndex == 7)
return YES;
else
return NO;
}
将我的评论更改为回答: 您可能希望使用
UITableViewDataSource
的-(BOOL)tableView:(UITableView*)tableView canEditRowAtIndexPath:(nsindepath*)indepath
函数。下面的实现可能是您所需要的全部(前提是没有比您提供的更复杂的逻辑)
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPat {
return _segmentedControl.selectedSegmentIndex == 7;
}
我相信您希望使用
UITableViewDataSource
的-(BOOL)tableView:(UITableView*)tableView canEditRowAtIndexPath:(nsindepath*)indepath
函数来代替。实现可能非常简单,如返回分段控件。selectedSegmentIndex==7;
我现在就试试看