目前在我的Swift
应用中,我有一个UITableViewController
。当用户滚动到表格的顶部时,我已经实现了分页 - 它会加载更多数据并填充表格。
但是现在我想要应用另一个功能 - 当用户滚动到表格的最底部时,它应该截断之前添加的行,这要归功于分页并且只留下最后10个单元格。
到目前为止,我的代码看起来像这样:
override func tableView(_ tview: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
if indexPath.row == 0 { // first cell
print("this is first cell - it works")
loadMoreItems()
}
if indexPath.row == messages.count - 1 { // last cell
if(self.messages.count > 10){
leaveTenVisibleMessages()
}
}
let cell = tview.dequeueReusableCell(withIdentifier: "chat") as! SingleCommentCell
let msg = self.messages[indexPath.row]
.
.
.
,方法leaveTenVisibleMessages
如下所示(到目前为止):
func leaveTenVisibleMessages(){
print("last cell before \(self.messages.count)")
if(self.messages.count > 10){
self.messages = Array(self.messages.suffix(10))
}
print("last cell after \(self.messages.count)")
//tview.reloadData()
}
然而,即使我看到修剪阵列有效:
last cell before 11
last cell after 10
我经常收到错误:
fatal error: Index out of range
我认为原因是cellforrow
在运行时需要数组messages
中的10个以上的条目。我怎么才能刷新10行呢?
我刚检查过,问题出在这一行:
let msg = self.messages[indexPath.row]
e.g。我的代码引用indexPath.row = 29
和messages
数组只有10条记录
答案 0 :(得分:0)
检查返回numberOfRowsInSection的代码。
e.g。
func tableView(
_ tableView: UITableView,
numberOfRowsInSection section: Int) -> Int
{
let result = self.messages.count
NSLog("numberOfRowsInSection = %d", result)
return result
}