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

Ios 无法在tableview中删除显示消息行,ios,objective-c,swift,uitableview,Ios,Objective C,Swift,Uitableview,我有一个表视图,它实现了当用户在行上滑动时显示delete按钮 一切正常,但由于条件有限,无法删除几行。 如何在UI上显示消息,告知无法删除该行。 我有下列代表 tableView:canEditRowAtIndexPath: 如果行是否需要删除,则返回true和false 但是,当用户登陆屏幕或调用“重新加载表”视图时,就会调用这个方法,所以我不能在这个委托中放入代码,而不放入一些奇怪的if条件 我让这个在代理中工作 tableView:editingStyleForRowAtIndexPa

我有一个表视图,它实现了当用户在行上滑动时显示delete按钮

一切正常,但由于条件有限,无法删除几行。 如何在UI上显示消息,告知无法删除该行。 我有下列代表

tableView:canEditRowAtIndexPath:
如果行是否需要删除,则返回true和false

但是,当用户登陆屏幕或调用“重新加载表”视图时,就会调用这个方法,所以我不能在这个委托中放入代码,而不放入一些奇怪的if条件

我让这个在代理中工作

tableView:editingStyleForRowAtIndexPath:
仅当用户刷卡时才会调用。 但这个委托的问题是,在iOS 10.2中,在调用CaneditRowatineXpath之前,每行都会调用这个委托,所以它可以工作。但在最新的iOS 11.2.2 EditingStyleForRowatineXpath中,在CaneditRowatineXpath之后调用它,这导致只调用那些可以删除的行,而不调用其他行。 iOS 11.2中的这种模式确实有意义,但它不允许我在解决方案中使用此委托。有人能建议我如何达到要求的行为吗?

试试这个:

-(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";

   } 

}

是否正在查找tableView:CommittedItingStyle:ForRowatineXpath:?使用此选项,您可以通过选中editingStyle“tableView:CommittedItingStyle”来显示基于条件的警报,该选项仅对启用了编辑的行调用。所以它可以用来确认用户是否想要删除这一行,但在我的例子中,我不想让用户看到这一行可以被删除,而只是给出一个类似于toast的消息,该行无法删除。我认为您最好的选择是在您的手机中添加一个手势识别器。@天行者我曾尝试在手机上放置手势,但我不想显示为可以删除,但我无法在创建手机时决定自己的状态,每次用户刷该行时,我都必须进行检查,要决定是否可以向其他用户显示删除选项。我认为您应该使用tableView:canEditRowAtIndexPath:并使用奇怪的if条件。我需要显示类似toast消息的内容,该消息告诉用户不能在此行上滑动以删除。@Soansasini此条件设置tableView:cellForRowAtIndexPath:methodNot理解代码后,每次重新加载视图时都会调用CellForRowatineXpath。我需要获得用户在手机顶部滑动的信息。表必须决定行是否可以编辑。此时,我可以显示一条toast消息,如cannot delete row,否则,表可以继续显示单元格上的delete按钮。@Soansasini我已经向这个CaneditRowatineXpath方法添加了代码。我正在以MVVM模式编写代码,所以我的条件是否允许在VM中,它一直在变化。我理解你的代码,但它不能解决我的问题。我加载我的单元格,当用户刷一行时,我检查条件并返回yes和no,我可以在那里显示一条toast消息,但问题是这个方法总是从不同的地方被调用,比如,当你重新加载表时,这个方法会被评估。所以,如果我把toast消息放在这个方法中,toast消息会显示很多次。大多数情况下,当用户刚登陆屏幕时。所以我不能把代码放在这里。