5

その行を選択するUITableViewと緑色(カスタマイズ)になりますが、別の行を選択すると、以前に選択した行は緑色のままになりません。行を選択するたびにテーブルをリロードしています。これを試しました

NSIndexPath *selection = [mainTable indexPathForSelectedRow];
[mainTable selectRowAtIndexPath:selection animated:NO
scrollPosition:UITableViewScrollPositionNone]; 

しかし、このコードでは、最新の選択された行のみを取得します緑(選択された)これを検索していくつかの提案を見つけました、それらのほとんどは、選択された行のインデックス値を配列に格納し、後でこの配列を使用することを提案しています、私は試しましたこれは動作しませんでした。その他の提案やサンプルコードをいただければ幸いです。

4

2 に答える 2

8

アップデート:

これを実現するためのより良い方法は、選択したままにしておきたいindexPathのUITableViewDelegateメソッドからnilを返すことです。tableView:willDeselectRowAtIndexPath:

これを使用しないでください:

このaddUITableViewDelegateメソッドを試してください:

- (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath
{
  //use this for row u want to prevent to deSelect
  [tableView selectRowAtIndexPath:indexPath animated:NO scrollPosition:UITableViewScrollPositionNone];               
}
于 2012-11-16T06:52:35.283 に答える
4

これを行う:

mainTable.allowsMultipleSelection = YES;

UITableViewクラスリファレンスから:

permitMultipleSelection

ユーザーが編集モード以外で複数の行を選択できるかどうかを決定するブール値。

@property(nonatomic) BOOL allowsMultipleSelection

討論

このプロパティは、編集モード以外で複数の行を同時に選択できるかどうかを制御します。このプロパティの値が「YES」の場合、タップされた各行の横にチェックマークが付けられます。行をもう一度タップすると、チェックマークが削除されます。を呼び出すとindexPathsForSelectedRows、選択した行を識別するインデックスパスを取得できます。

このプロパティのデフォルト値はですNO

于 2012-11-16T06:53:28.000 に答える