3

allowsMultipleSelectionストーリーボードでYESに設定したtableViewがあります。

編集

私は1つのことについて間違っていました...[tableView indexPathsForSelectedRows]の間に1つのオブジェクトを含むNSArrayを返しますdidSelectRowAtIndexPath

ただし、テーブルをリロードした後は機能しないcellForRowAtIndexPathため、適用するアクセサリ(チェックマークの有無)がチェックされます。

元の質問では、行を手動で選択しようとしていました...どうやらそれはtableView自体によって処理されているようです..しかし、途中のどこかで、行を呼び出さないため、自動的に行の選択が解除deselectRowAtIndexPathされます...

元の質問:

何らかの理由でセルを選択に設定しても変更されません。

- (void)tableView:(UITableView *)tableView 
    didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];

    //cell does not update selected property to YES after this next line
    cell.selected = YES;

    [tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath]  
               withRowAnimation:UITableViewRowAnimationFade];
}

選択したインデックスパスを自分で追跡できると思います...しかし、indexPathsForSelectedRows以前は成功に関与した方法を使用したことを誓うことができます...

4

4 に答える 4

2

selectedプロパティを直接設定することはできません

だから代わりに

cell.selected = YES;

使用する

[tableView selectRowAtIndexPath:TheIndexPAth animated:YES scrollPosition:UITableViewScrollPositionBottom];
于 2012-11-07T20:46:08.317 に答える
1

試す[cell setSelected:YES animated:YES]

cell.selected読み取り専用だと確信しています

于 2012-11-07T20:48:15.897 に答える
1

このクラスのすべてのコードをpastbeanに投稿し、ここにリンクを入力してください。詳細情報が必要です。

また、試してみてください:

//インターフェース内

 @interface YourClass (){
 NSInteger _selectedIndex;
 }

// cellForRowAtIndexPath:メソッド

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath  
 *)indexPath
 {
 UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];

// didSelectRowAtIndexPath:メソッド

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
_selectedIndex = indexPath.row;
[self.tableView reloadData];

}

于 2012-11-08T00:39:43.890 に答える
0

質問が変わったので少し不公平ですが..私にとっては..答えはどちらかを使用しないでください

indexPathsForSelectedRows

または電話しないでください

reloadTable

tableViewで。

私は後で選択しました。アクセサリを装飾し、didSelectRowリロードdidDeselectRow時にそれを行う代わりに、テーブルをリロードすることはありませんでした。

誰かが上記の両方を含む解決策を思い付くことができるならば、私は代わりにその答えを選びます。

于 2012-11-08T16:54:57.973 に答える