仅在选择特定段时启用滑动以删除
Enable Swipe to Delete Only when certain segment is selected
我只想在 segmentedcontrol.segmentindex == 7 时显示单元格。
使用下面的代码,无论选择的段如何,默认情况下每个单元格都是 "swipe deletable"。
我有一个 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);
}
}
这个怎么样?
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
{
if(segmentedControl.selectedSegmentIndex == 7)
return YES;
else
return NO;
}
将我的评论更改为答案:
您可能想改用 UITableViewDataSource
的 - (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
函数。以下实现可能是您所需要的(前提是没有比您提供的更复杂的逻辑。
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPat {
return _segmentedControl.selectedSegmentIndex == 7;
}
我只想在 segmentedcontrol.segmentindex == 7 时显示单元格。
使用下面的代码,无论选择的段如何,默认情况下每个单元格都是 "swipe deletable"。
我有一个 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);
}
}
这个怎么样?
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
{
if(segmentedControl.selectedSegmentIndex == 7)
return YES;
else
return NO;
}
将我的评论更改为答案:
您可能想改用 UITableViewDataSource
的 - (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
函数。以下实现可能是您所需要的(前提是没有比您提供的更复杂的逻辑。
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPat {
return _segmentedControl.selectedSegmentIndex == 7;
}