当我刷新我的桌子时,我想要所有以前的细胞去掉(但它没有发生)。我很确定我没有任何参考资料。
这是我的刷新方法:
apiClient.listUsersNow(start, num: num, filter: filter) { [weak self] (response) -> Void in
if self != nil && response != nil && response["status"] == "success"{
self!.items = [] //data source
self!.tableView.reloadData()
for(_, stuff): (String, JSON) in response["data"]["results"]{
if let user_id = stuff["id"].int {
self!.items.append(user_id)
}
}
self!.tableView.reloadData()
}
callback()
}
我的印象是,当我致电reloadData()
时,旧单元格应该自行退出,并且我不需要手动执行此操作。
显然我错了......在重新加载数据之前,我是否必须遍历每个单元格并调用cleanupCell()
?
答案 0 :(得分:1)
您不必做任何事情,因为tableview单元格需要分配/取消分配单元格。 tableview维护一组单元格并根据需要重用它们。您需要做的就是在tableview数据源方法dequeuereusablecellwithidentifier
中使用cellforrowatindexpath
。或者,您也可以手动创建它们,但如果您没有strong
对它们的main
引用,它们会自动解除分配。