【发布时间】:2014-08-26 08:34:03
【问题描述】:
我有带有自定义单元格的 tableView。如果用户向下滚动表格,我会从 Internet 加载一些信息并将其添加到表格中。问题:加载信息后新单元格有时会重写旧单元格,有时滚动时此表中会出现空白单元格。有我的代码:
var Bool canEdit = true
@IBOutlet var table : UITableView!
var eventList : [EventCell] = [] // EventCell - custom cell class
func addEventsAndRefresh() {
if (canEdit){
canEdit = false
HTTPManager.getEvents(isFuture: true, offset: eventList.count, didLoad: getEvents) //it creates url and call function "getEvents" after ending async request
}
}
func getEvents(response : NSURLResponse!, data : NSData!, error : NSError!) {
if ((error) != nil) {
HTTPManager.showErrorAlert()
} else {
var result = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: nil) as NSArray
for elementOfArray in result {
var cell : EventCell = table.dequeueReusableCellWithIdentifier("EventCell") as EventCell
... // parsing result to cell
eventList.append(cell)
}
table.reloadData()
canEdit = true
}
}
func tableView(tableView: UITableView!, numberOfRowsInSection section: Int) -> Int {
return eventList.count
}
func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell! {
return eventList[indexPath.row]
}
func scrollViewDidEndDragging(scrollView: UIScrollView!, willDecelerate decelerate: Bool) {
var currentOffset = scrollView.contentOffset.y;
var maximumOffset = scrollView.contentSize.height - scrollView.frame.size.height;
if (maximumOffset - currentOffset <= -40.0 && canEdit) {
addEventsAndRefresh()
}
}
【问题讨论】:
-
对此不确定,但我的直觉是,虽然缓存表格单元格的想法很聪明,但这可能是导致问题的原因。无需缓存表格视图单元格,只需缓存 data 并根据需要在
tableView(tableView:, cellForRowAtIndexPath indexPath:)中创建单元格(按照通常的单元格创建模式)。