在tableview中无法删除显示消息行

时间:2018-01-23 03:26:17

标签: ios objective-c swift uitableview

我有一个表视图,当用户在行上滑动时,它具有显示删除按钮的实现。

一切正常,但由于条件很少,几行无法删除。 如何在UI上显示消息,告诉该行无法删除。 我有以下代表实施

tableView:canEditRowAtIndexPath:

如果需要删除行,则返回true和false。

但是当用户登陆屏幕或调用重载表视图时会调用此方法,因此我无法将代码放入此委托中,而不会在条件下放置一些奇怪的内容。

我在委托中使用了这个

tableView:editingStyleForRowAtIndexPath:

只有在用户滑动时才会调用它。 但是这个委托的问题在于,在iOS 10.2中,在调用canEditRowAtIndexPath之前,每个行都会调用此委托,因此它可以正常工作。但是在最新的iOS 11.2.2 editingStyleForRowAtIndexPath之后调用canEditRowAtIndexPath,这导致只调用那些可以删除但不能删除的行。 iOS 11.2中的这种模式确实有意义,但它不允许我在我的解决方案中使用此委托。任何人都可以建议我如何实现所需的行为?

1 个答案:

答案 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";

   } 

}