所以我有一個tableview,它有每個單元格中的項目列表。這些單元格中的每一個都包含一個圖像視圖,該圖像在被點擊時展開該單元格並顯示該項目的圖像。當我向下滾動表格視圖並向上滾動到選定的單元格時,圖像就消失了。我知道這是由於重複使用單元格,但我不確定如何在滾動其他項目時將展開的單元格圖像保留在原位。防止選中的單元格被重用
我來最接近的是在這裏: 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