我有一个表视图,当用户在行上滑动时,它具有显示删除按钮的实现。
一切正常,但由于条件很少,几行无法删除。 如何在UI上显示消息,告诉该行无法删除。 我有以下代表实施
tableView:canEditRowAtIndexPath:
如果需要删除行,则返回true和false。
但是当用户登陆屏幕或调用重载表视图时会调用此方法,因此我无法将代码放入此委托中,而不会在条件下放置一些奇怪的内容。
我在委托中使用了这个
tableView:editingStyleForRowAtIndexPath:
只有在用户滑动时才会调用它。
但是这个委托的问题在于,在iOS 10.2中,在调用canEditRowAtIndexPath
之前,每个行都会调用此委托,因此它可以正常工作。但是在最新的iOS 11.2.2 editingStyleForRowAtIndexPath
之后调用canEditRowAtIndexPath
,这导致只调用那些可以删除但不能删除的行。
iOS 11.2中的这种模式确实有意义,但它不允许我在我的解决方案中使用此委托。任何人都可以建议我如何实现所需的行为?
答案 0 :(得分:1)
试试这个:
-(BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath{
// Set Condition which row delete
NSString *isDeleteorNot = [[arrInstaAccountList objectAtIndex:indexPath.row] objectForKey:@"Status"];
// Set your if condition
if ([isDeleteorNot isEqualToString:@"delete"])
{
return true;
}
else
{
return false;
}
}
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
// Set Condition which row delete
NSString *isDeleteorNot = [[arrInstaAccountList objectAtIndex:indexPath.row] objectForKey:@"Status"];
// Set your if condition
if ([isDeleteorNot isEqualToString:@"delete"])
{
cell.Toast.text = @"Delete";
}
else
{
cell.Toast.text = @"Not Delete";
}
}