各セルビューにバッジを追加して、コレクションビューに複数の選択肢を表示しようとしています。最初の(選択されていない)イメージは正しく設定されますが、ビューは決して選択されたバージョンに更新されません。手動で設定しようとしましたが、選択した画像が機能し、セル内に表示されていることがわかりました。 NSLogは、 'selected'が期待通りにトグルしていることを示し、ブレークポイントはイメージへの適切な割り当てが実行されていることを示します。間言を言い訳すると、SOはうまく再生されず、真夜中の後です。サブクラス化されたUICollectionViewCellは画像を更新しません
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
SMListCollectionViewCell *cell = (SMListCollectionViewCell *)[collectionView dequeueReusableCellWithReuseIdentifier:reuseIdentifier forIndexPath:indexPath];
if (!indexPath.row)
{
cell.image.image = [UIImage imageNamed:@"Add"];
cell.label.text = @"Create New";
cell.imageBadge.hidden = YES;
}
else
{
cell.image.image = [UIImage imageNamed:[listManager.myLists[indexPath.row-1] valueForKey:keyDetailImage]];
cell.label.text = [listManager.myLists[indexPath.row-1] valueForKey:keyName];
cell.imageBadge.hidden = !self.editing;
NSLog(@"selected is %d",cell.selected);
if (cell.selected)
{
cell.imageBadge.image = self.badgeSelected;
}
else
{
cell.imageBadge.image = self.badgeUnselected;
}
}
return cell;
}
:
さらに、
cellForItemAtIndexPath:
は今にモーフィングします。セルがいつも変更され、再描画されていることを忘れないでください**。 ***あなたのデータ***で何かを "選択"しなければなりません。もしあなたが "車"の配列を持っているなら、それらのうちの10個を選択し、 "3"を選択します。あなたは車の中にフィールドを持っていなければなりません。そして、ナンバー3では、その車を「選択された」*として設定しなければなりません。 'tableView#cellForRowAt'でセルを描画するときに、その品質を使用する必要があります。 – Fattie@JoeBlow以下の_answers_で提案したアプローチについてどう思いますか教えてください。 – ystack