0

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

*注: 上記のコードは現在機能しているようです。この問題はもう発生しておらず、理由もわかりません *

4

1 に答える 1