【发布时间】:2014-10-20 05:48:30
【问题描述】:
我正在尝试使用两种方式将新数据添加到 UITableView
-
第一种方式
func insertData(appendMessages:[Message]) { var currentCount = self.messeges.count; var indxesPath:[NSIndexPath] = [NSIndexPath]() for msg in appendMessages { indxesPath.append(NSIndexPath(forRow:currentCount,inSection:0)); self.messeges.append(msg) currentCount++ } self.tableView.beginUpdates() self.tableView.insertRowsAtIndexPaths(indxesPath, withRowAnimation: UITableViewRowAnimation.Bottom) self.tableView.endUpdates() } -
第二种方式
func insertData(appendMessages:[Message]) { for msg in appendMessages { self.messeges.append(msg) } self.tableView.reloadData() }
你看我有分开的结果。
当使用“reloadData”时一切正常,但我想这不好,因为我正在更新所有内容而不是新内容?
当使用“insertRowsAtIndexPaths”时,我有重复的分隔符,并且只有在我点击它时才会绘制该行
这很奇怪,我做错了什么......
谢谢
谢伊
【问题讨论】:
-
我对Swift一无所知,但是传统的Objective-C API基本禁止直接编辑列表。正确的方法是向表格视图的数据源(委托)添加新元素。
-
jsumners,看起来这不是问题所在——如果
self.messeges是数据源使用的模型对象,调用-insertRowsAtIndexPaths:withRowAnimation:应该没问题。当插入与数据源的最终状态不一致时,通常会出现问题,这些问题通常会导致崩溃。 -
@NoahWitherspoon 谢谢,是的
self.messeges是正在使用的模型。 “插入与数据源的最终状态不一致”对您来说是什么意思,我该如何解决?
标签: ios uitableview swift