我一直在努力解决这个问题。 我可以在标签单元格之间自由滚动,因为它实际上可以记住它们。 但是,如果我从视图中删除了描述单元,它会立即将其从内存中删除,并且不会将其取回。 取而代之的是,当我滚动回到说明时,我只会收到“致命错误:在展开可选值时意外发现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”做些事情,但是我不确定在这种情况下如何实现它,如果距离很远,请告诉我我做错了什么。 谢谢!

#1楼 票数:2 已采纳

更改以下内容:

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

附:

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

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

  ask by Ted Huinink translate from so

未解决问题?本站智能推荐:

1回复

Swift-向上滚动时表为空白

我在使用tableview时遇到麻烦。 当一直到表的末尾并再次向上时,表的内容不会立即加载。 这是代码: 有什么建议么 ?
1回复

在tableView底部按下“返回”时,导航控制器崩溃。如果我稍微向上滚动,程序不会崩溃

我有两个页面,每个页面中都有一个tableView。 当通过推式按键按下单元格时,第一个表格视图将导致第二个表格视图。 我使用“嵌入”将导航控制器应用于第一个视图控制器,该控制器为第二个视图提供后退按钮,该按钮适用于应用程序的99%。 由于某些原因,如果我一直向下滚动到第二个Thread
1回复

Swift-滚动时出现tableViewCell问题

我正在使用swift创建一个聊天应用程序。 在故事板上,我有一个View Controller负责显示消息。 我有3个swift文件: ChatingViewController:与情节提要上的View Controller关联的类 CustomChatingTableViewC
1回复

无限滚动以向上滚动tableView吗?

我有一个聊天消息传递应用程序,它可以将我的消息从最早到最新加载,然后自动滚动到底部,以便用户看到最新消息。 我只加载25条消息,然后当用户滚动到顶部时,我想上传接下来的25条消息。 事实证明,这确实很棘手,并且最终陷入无限循环。 这是我在做什么: 在表格完成滚动到底部之前,它开始获
3回复

滚动Swift时tableView的值重复

我有一个tableView来显示工作日的时间 timingsArray在tableView中用于显示时序 timingsArray类型timingObj 在tableView中我想显示所有日期及其时间,如果当天没有时间,则计时单元格将为空 这是细胞的类 例如星期二和星期四只有
1回复

向上滚动时,如何使TableView推开上述对象?

即在TableView上方有一个具有特定数据的对象,并且当TableView向上滚动时,我希望将上述对象推离屏幕。 当您查看业务页面时,类似于Maps应用程序,该页面有标题,然后是带有电话,主页等的下面的TableView。 谢谢!
2回复

Swift-以编程方式设置UITableViewCell在滚动时重置

因此,当我选择UITableViewCell的布局时,将以编程方式对其进行设置: 当我滚动tableView时,单元格的布局将重置为在cellForRowAtIndexPath中设置的原始布局。 但是,当我在上面的函数中设置高度时,高度保持应有的状态。 有谁知道如何解决这一问题? 这
1回复

swift-从redditAPI添加帖子的tableview分页

我从Reddit API获取数据并在tableview中显示reddit帖子。 我想一次从api加载5个(例如)帖子并显示它们,然后在用户向下滚动到最后第五个单元格时加载下5个帖子。 也许我需要改变从api获取帖子的逻辑。 请指教。 谢谢! 我正在使用MVVM。 使用TableViewControl