したがって、各セルにアイテムのリストを持つテーブルビューがあります。これらのセルの各々は、タップされると、セルを拡大し、そのアイテムの画像を表示する画像ビューを含む。私がテーブルビューを下にスクロールし、選択されたセルまでスクロールバックすると、イメージはなくなります。私はこれが細胞の再利用によるものだと知っていますが、他のアイテムをスクロールしながら展開された細胞イメージを保持する方法はわかりません。選択したセルが再利用されないようにします。
私が来ている最も近いがここにある: my table view reuse the selected cells when scroll -- in SWIFT
誰かが私に素晴らしいだろう手を貸すことができれば。ありがとう!
編集:コードスニペットを追加 - お待ちください。
fileprivate var expandedRowIndex: Int?
// cellForRowAt
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
{
// CatalogItem row.
let item = self.items[indexPath.row]
let expanded = indexPath.row == self.expandedItemRowIndex
// Return standard catalog item cell.
let reuseID = expanded
? CatalogItemCell.PROTOCELL_EXPANDED.id
: CatalogItemCell.PROTOCELL.id
let cell = tableView.dequeueReusableCell(withIdentifier: reuseID) as! CatalogItemCell
// Reset thumbnail image back to nil. Needed so that images appear
// only in the cell that they belong in.
if indexPath.row == self.expandedRowIndex{
cell.uiImage_Thumbnail.image = nil
}
return cell
}
// didSelectRowAt
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)
{
tableView.deselectRow(at: indexPath as IndexPath, animated: true)
// Expand row - Get the current cell and show image
self.expandedItemRowIndex = indexPath.row
let item = self.items[indexPath.row]
let currentCell = tableView.cellForRow(at: indexPath)
// Pass both the selected cell and item to the ImageManager
ImageManager.startImageRequest(currentCell: currentCell!, item: item)
if self.expandedRowIndex == indexPath.row
{
// Selected row is already expanded.
return
}
var reloadPaths = [IndexPath]()
// Collapse previously expanded row.
if let previousRowIndex = self.expandedRowIndex
{
reloadPaths.append(IndexPath(row: previousRowIndex, section: 0))
}
// Expand the selected row.
self.expandedRowIndex = indexPath.row
let item = self.items[indexPath.row]
debugPrint(item.description)
reloadPaths.append(IndexPath(row: indexPath.row, section: 0))
tableView.reloadRows(at: reloadPaths as [IndexPath], with: .fade)
}
cellForRowAtIndexPathメソッドのコードを追加できますか? – Delimiter
「選択されたセルを再利用しないようにする」:再利用とその後ろに行われるすべての最適化を保つ必要はありません。再利用の仕組みを理解し、コードをそれに適応させることが必要ですか?いくつかのコードと例で私たちはあなたを助けてくれるかもしれませんが、他にはできません。 – Larme
私の質問をいくつかのスニペットで更新しました。うまくいけば、正しい軌道に乗ってくれれば十分です。 @Larmeはい、私はiOSの世界で私の知識の欠如のために間違った質問を語ったと思います。私は、セルを拡大したままにして、そのセルからスクロールしても画像を表示し続けたいと思います。 – Mystified