我有一个包含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左右。因此不会有很多内存问题。
我能以任何方式做到吗??
答案 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 。因此,您可以在内存中获得所需数量的单元格。