编辑tableview行以删除iOS中Tableview中的多行,从而产生错误

时间:2013-02-22 10:06:22

标签: xcode ios6 tableview

我按照链接 select multiple rows from uitableview and delete

我将删除方法中的代码编写为

(void)deleterows:(id)sender { 
NSArray *array=[selectedRows allObjects]; 
NSLog(@"indexes are::%@",array);
[self.tableView deleteRowsAtIndexPaths:array withRowAnimation:UITableViewRowAnimationTop];
 }

但是它给出的错误为Terminating app due to uncaught exception NSInvalidArgumentException

原因:-[__NSCFNumber row]: unrecognized selector sent to instance 0x9161b50

请告诉我哪里弄错了。

2 个答案:

答案 0 :(得分:0)

selectedRows是一组NSNumbers。 deleteRowsAtIndexPaths:withRowAnimation:需要一组NSIndexPath个对象。您链接的答案清楚地表明您应该创建这样的数组:

  
      
  • 在您的deleteRows方法中,遍历selectedRows集,构建一个indexPaths数组,从数据中删除这些行   模型,然后调用(使用您首选的动画类型):
  •   
     

[self.myTableView deleteRowsAtIndexPaths:arrayOfIndexPathsToDelete   withRowAnimation:UITableViewRowAnimationTop];

答案 1 :(得分:0)

由于您定位的是> = iOS5,因此您只需使用:

self.tableView.allowsMultipleSelection = YES;

然后

(void)deleterows:(id)sender { 
  NSArray *array= [self.tableView indexPathsForSelectedRows]; 
  NSLog(@"indexes are::%@",array);
  [self.tableView deleteRowsAtIndexPaths:array withRowAnimation:UITableViewRowAnimationTop];
 }

根本不使用selectedRows数组。

如果您只想在编辑模式下进行多项选择,则应设置

self.tableView.allowsMultipleSelection = YES;

在文档中查看allowsMultipleSelectionDuringEditing