我一直在努力解决这个问题。我可以在标签单元之间自由滚动,因为它实际上会记住它们。但是如果我从我的视图中获取描述单元格,它会立即从内存中删除它并且不会将其取回。相反,当我滚动回到描述时,我只是得到“致命错误:在展开可选值时意外地发现了nil”。所以我有以下几段代码:
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(true)
tableView.delegate = self
tableView.dataSource = self
tableView.rowHeight = UITableViewAutomaticDimension
tableView.estimatedRowHeight = 44.0
tableView.reloadData()
}
我不知道viewWillAppear在这种情况下是否有任何重要性,但是如果它是告诉我的话。无论如何,这是为了填写我的表视图中的单元格:
func GetDescription(cell:descCell, indexPath: NSIndexPath) {
cell.descText.text = descriptTextTwo.htmlToString
}
func GetTagCell(cell:basicTag, indexPath: NSIndexPath) {
let item = tagResults[indexPath.row]!
cell.titleLabel.text = item["tagname"]?.htmlToString
}
func GetValueCell(cell: basicTag, indexPath: NSIndexPath) {
let item = tagResults[indexPath.row]!
cell.valueLabel.text = item["value"]?.htmlToString
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
if filledDescription == false {
return getDescriptionAtIndexPath(indexPath)
} else {
return getTagAtIndexPath(indexPath)
}
}
func getDescriptionAtIndexPath(indexPath:NSIndexPath) -> descCell {
let cell = self.tableView.dequeueReusableCellWithIdentifier(descriptionCell) as descCell
GetDescription(cell, indexPath: indexPath)
filledDescription = true
return cell
}
func getTagAtIndexPath(indexPath: NSIndexPath) -> basicTag {
let cell = self.tableView.dequeueReusableCellWithIdentifier(tagCell) as basicTag
GetTagCell(cell, indexPath: indexPath)
GetValueCell(cell, indexPath: indexPath)
return cell
}
那么如何让Swift记住第一个单元格中的内容呢?因为我猜这就是发生的事情,所以一旦你将它从视图中删除它就会删除第一个单元格中的内容。我猜我必须用“indexPath”做一些事情,但我不确定如何在这种情况下实现它,如果我很远,请告诉我我做错了什么。谢谢!
答案 0 :(得分:1)
更改以下内容:
if filledDescription == false {
return getDescriptionAtIndexPath(indexPath)
} else {
return getTagAtIndexPath(indexPath)
}
使用:
if indexPath.row == 0 {
return getDescriptionAtIndexPath(indexPath)
} else {
return getTagAtIndexPath(indexPath)
}
这将确保表格中的第一个单元格始终被视为"描述" 单元格。由于filledDescription
在您设置为false
后永远不会变为true
,当您返回第一个单元格时,它会被视为&#34;标记&#34; < / strong>单元格(由于if
行),实际上可重复使用的单元格包含&#34;描述&#34; 单元格数据