以正确的方式将数据追加到UITableView中,swift
我想用两种方法将新数据添加到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”我有重复的分隔符,只有当我点击它时,
这很奇怪,我做错了什么…
谢谢
吉文
错误的是你应该在0初始化计数器,然后增加它:
func insertData(appendMessages:[Message]) { var currentCount = 0 var indexesPath = [NSIndexPath]() for _ in appendMessages { let index = let index = NSIndexPath(forRow: i, inSection: 0) indexesPath.append(index) currentCount++ } self.tableView.beginUpdates() self.tableView.insertRowsAtIndexPaths(indexesPath, withRowAnimation: UITableViewRowAnimation.Bottom) self.tableView.endUpdates() }
- 如何使用选项字典在Swift中closuresCore Data Write-Ahead日志logging?
- 在swift 2中无法使用AVCaptureVideoDataOutput通过CGDataProviderCopyData获取像素数据
- 计数标志表情符号时,Swift countElements()返回不正确的值
- 如何将数据从孩子传递给父视图控制器? 迅速
- 在Swift中暂停和播放SpriteKit游戏
- Xcode 8.1推送通知在swift 2.3与firebase集成没有得到?
- 如何快速整合PayU Money
- Firebase或Swift没有检测到变音符号
- 谷歌地图方向API返回零结果Swift