UITableView にカスタム UITableViewCell セルがあります。ユーザーがセルを選択し、そのセルが画面外にスクロールされてから画面に戻ると、選択されたセルは空白になります。
セルが再利用されるため、セルにすべての値を設定する必要があることはわかっていますが、これを理解することはできませんでした。
画像 1 は、ユーザーがセルを選択していることを表しています。
画像 2 は、セルが画面外にスクロールされて画面に戻ったときを表しています。
(画像がぼやけているという事実は無視してください。顧客データを保護するためです)
注:テーブルを選択できるようにしたいのですが、セルを強調表示する機能を削除することはお勧めしません。選択したセルを画面にスクロールして戻すと、実際には青いセルが表示されるようにしたいと考えています。
どんな助けでも大歓迎です。
編集:いくつかのコードを追加します:
// Define a property to keep track of the cell that was selected last using the NSIndexPath
@property (nonatomic, strong) NSIndexPath *lastSelectedIndexPath;
///////
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
// Keeps track of the lastest selected entry
self.lastSelectedIndexPath = indexPath;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
IPCSearchResultTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath];
[self configureCell:cell atIndexPath:indexPath];
return cell;
}
- (void)configureCell:(UITableViewCell *)cell atIndexPath:(NSIndexPath *)indexPath
{
// Cast the cell to the custom cell
IPCSearchResultTableViewCell *searchResultCell = (IPCSearchResultTableViewCell *)cell;
// RepositoryIndex is a coredata object with information
MyCoreDataEntity *entity = [self.fetchedResultsController objectAtIndexPath:indexPath];
searchResultCell.label1.text = entity.attribute1;
searchResultCell.label2.text = entity.attribute2;
searchResultCell.label3.text = entity.attribute3;
searchResultCell.label4.text = entity.attribute4;
}
*注: 上記のコードは現在機能しているようです。この問題はもう発生しておらず、理由もわかりません *