0

リンクをたどって、 uitableviewから複数の行を選択して削除します

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

どこで間違えたのか教えてください。

4

2 に答える 2

0

selectedRowsNSNumber の配列です。オブジェクトdeleteRowsAtIndexPaths:withRowAnimation:の配列が必要です。NSIndexPathリンクした回答には、そのような配列を作成する必要があることが明確に記載されています。

  • deleteRows メソッドで、selectedRows セットを反復処理して indexPath の配列を作成し、データ モデルからこれらの行を削除してから、(好みのアニメーション タイプで) を呼び出します。

[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;

ドキュメントのallowMultipleSelectionDuringEditingをご覧ください。

于 2013-02-22T10:37:28.833 に答える