0

我按照链接 从 uitableview 中选择多行并删除

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

(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

请告诉我我在哪里做错了。

4

2 回答 2

0

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

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

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

于 2013-02-22T10:17:56.387 回答
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

于 2013-02-22T10:37:28.833 回答