防止在表格视图Swift中重用自定义单元格

Posted

技术标签:

【中文标题】防止在表格视图Swift中重用自定义单元格【英文标题】:Prevent reuse of custom cells in table view Swift 【发布时间】:2015-08-27 20:35:23 【问题描述】:

我有一个不知道如何解决的问题。

我有两个自定义单元笔尖 - 两者的数据都是从单独的数组中获取的。

结构如下

nib1-cell line1
nib1-cell line2
...
nib1-cell line n
nib2-cell line1

在末尾总是有一个 nib2-cell,带有 uibutton。 一旦按下uibutton - 就会附加 nib1 数组。 我想出了一种方法如何在tableview 的底部插入值,但是当我向下或向上滚动时,带有 nib2 的单元格被重用并替换为 nib1-cell 数据。

如何防止这些单元格被重复使用或保存它们的状态?

谢谢。

更新:数据源和 cellForRowAtIndexPath 代码

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int

    return someTagsArray.count



func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell     

    if(indexPath.row < someTagsArray.count - 1)
        var cell:TblCell = self.tableView.dequeueReusableCellWithIdentifier("cell") as! TblCell

        cell.lblCarName.text = someTagsArray[indexPath.row]


        return cell

     else if (indexPath.row == someTagsArray.count - 1)
      var celle:vwAnswers = self.tableView.dequeueReusableCellWithIdentifier("cell2") as! vwAnswers
        celle.Answer1.setTitle(answersdict[answersdict.endIndex - 2], forState:UIControlState.Normal)

        answertitle1 = "\(celle.Answer1.currentTitle!)"

        celle.Answer2.setTitle(answersdict.last, forState:UIControlState.Normal)
        answertitle2 = "\(celle.Answer2.currentTitle!)"

        //println(answertitle2)

        return celle

     else 
                    var cell2:TblCell = self.tableView.dequeueReusableCellWithIdentifier("cell") as! TblCell
        return cell2
    


【问题讨论】:

【参考方案1】:

您必须确定您想要在cellForRowAtIndexPath 中使用哪种类型的单元格并将正确的可重用单元格出列。也许像if (indexPath.row + 1)%3 == 0 这样的东西然后出列一个答案单元格。

但是,您可能希望考虑为此使用节标题。很难说没有看到您如何实现数据源。

【讨论】:

if (indexPath.row + 1)%3 == 0 的问题是第二个 nib 不应该总是排在第三个,它可能是第五个,第六个 - 因为数组中第一个 nib 的对象数量会有所不同。我还在我的帖子中为数据源添加了代码。 你应该只考虑你需要什么数据以及你想如何访问它。您要么需要跟踪每次有多少问题单元格并使用它来放置答案单元格,要么将其分成多个数组。我建议可能使用数组数组[Array&lt;String&gt;],这样数据源中的每个数组都代表一个问题列表。

以上是关于防止在表格视图Swift中重用自定义单元格的主要内容,如果未能解决你的问题,请参考以下文章

重用自定义 tableView 单元格时重复显示相同的子视图(Swift 4.1)

Swift 3 自定义单元格在滚动时更改

以swift语言在自定义表格视图单元格中更新进度视图下载

SWIFT:表格视图中的 2 个自定义单元格。怎么了?

表格视图中的自定义单元格未显示?

自定义表格视图单元格不滑动