gpt4 book ai didi

ios - Swift - 向上滚动时 TableView 崩溃

转载 作者:行者123 更新时间:2023-11-28 05:29:38 24 4
gpt4 key购买 nike

我一直在为这个问题而苦苦挣扎。我可以在标签单元格之间自由滚动,因为它实际上记住了它们。但是,如果我从我的 View 中取出描述单元格,它会立即将其从内存中删除并且不会取回。相反,当我滚动回到描述时,我只是得到“ fatal error :在展开可选值时意外发现 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 在这种情况下是否重要,但如果重要,请告诉我。无论如何,这是为了填充我的表格 View 中的单元格:

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 记住第一个单元格中的内容呢?因为我猜这就是发生的事情,它会在您将其移出 View 后立即删除第一个单元格中的内容。我猜我必须对“indexPath”做些什么,但我不确定在这种情况下如何实现它,如果我离得很远,请告诉我我做错了什么。谢谢!

最佳答案

更改以下内容:

 if filledDescription == false {
return getDescriptionAtIndexPath(indexPath)
} else {
return getTagAtIndexPath(indexPath)
}

与:

 if indexPath.row == 0 {
return getDescriptionAtIndexPath(indexPath)
} else {
return getTagAtIndexPath(indexPath)
}

这将确保表格中的第一个单元格始终被视为“描述” 单元格。由于 filledDescription 在将其设置为 true 后永远不会变为 false,因此当您返回第一个单元格时,它会被视为 “标记” 单元格(由于 if 行)实际上可重用单元格包含 “描述” 单元格数据

关于ios - Swift - 向上滚动时 TableView 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29369015/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com