每次创建新的UITableView(不重用任何单元格)

时间:2016-08-20 14:43:06

标签: ios swift uitableview

我有一个包含3种自定义单元格的表视图。 故事板中的界面。

项目中3个不同的类。

我目前正在这样做,并且IBOutlets的单元格将是零。

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = ListCell()
    cell.configureCell(Data[indexPath.row])
    return cell
}


class ListCell : UITableViewCell {

@IBOutlet weak var selectButton: UIButton!

func configureCell(data: ParamList) {
    selectButton.setTitle("Select " + data.name, forState: .Normal)
}

@IBAction func selectButtonPressed(sender: AnyObject) {
    print(selectButton.currentTitle)
}

}

我不想重复使用任何单元格,因为每个单元格都有不同的属性。 有些文本框具有不同的交互式内容,需要最终提交给Web服务。

我想在每个单元格的内存中创建新单元格。 最大单元格将在15左右。因此不会有很多内存问题。

我能以任何方式做到吗??

2 个答案:

答案 0 :(得分:1)

我终于解决了这个问题。 这就是我为此所做的。 我正在描述我的过程,如果有人想做同样的事情。

警告,只有在绝对必要时才执行此操作,并且您没有那么多可能影响性能的单元格。

使UITableView的单元格保留在内存中,即使在屏幕外滚动,也会在滚动视图中封装表格视图,并将UITableView的scrollEnabled设置为false。

如果使用Storyboards为您的TableView设置高度约束并为您的代码文件创建一个IBOutlet。

以编程方式添加具有不同标识符的新单元格。

"\(indexPath.section)\(indexPath.row)"

获取数据后,将tableView的高度设置为数据计数的乘数。

即。

tableViewHeightConstraint.constant = heightOfOneCell * data.count tableView.delegate = self tableView.dataSource = self

这样您就可以使用scrollView滚动,所有单元格仍将在内存中。

答案 1 :(得分:-3)

在方法 dequeueReusableCellWithIdentifier 中设置 nil 。因此,您可以在内存中获得所需数量的单元格。