我正在处理聊天应用程序。我有一个View Controller来在tableview中显示消息。在选择特定聊天时,我将获取12条最近的消息&重新加载表并将其滚动到底部,以便用户可以看到最近的消息(索引11)。 当用户开始向上滚动时(当他到达第0个索引时),我需要通过Web服务获取历史记录,并以相同的顺序平滑地在UI上显示它。
显示单元格的代码
cell = STBubbleTableViewCell.init(style: .Subtitle, reuseIdentifier: cellIdentifier)
cell.backgroundColor = self.chatTableView?.backgroundColor
cell.selectionStyle = .None
cell.dataSource = self
cell.delegate = self
let chat = chatMessages[indexPath.row]
cell.textLabel?.font = UIFont.systemFontOfSize(14.0)
cell.textLabel?.text = chat.message
if(self.isGroupChat)
{
cell.detailTextLabel?.text = NSString.init(format: "%@ %@", chat.authorName, chat.messageDate.toShortTimeString()) as String
}
else
{
cell.detailTextLabel?.text = chat.messageDate.toShortTimeString()
}
cell.authorType = chat.authorType == 0 ? AuthorType.STBubbleTableViewCellAuthorTypeSelf : AuthorType.STBubbleTableViewCellAuthorTypeOther
cell.bubbleColor = chat.bubbleType == 0 ? BubbleColor.STBubbleTableViewCellBubbleColorGreen : BubbleColor.STBubbleTableViewCellBubbleColorGray
获取聊天记录的代码
func scrollViewWillBeginDragging(scrollView: UIScrollView) {
pointNow = scrollView.contentOffset
}
func scrollViewDidEndDragging(scrollView: UIScrollView, willDecelerate decelerate: Bool) {
if (scrollView.contentOffset.y < pointNow.y)
{
self.fetchChatHistory()
}
}
self.fetchChatHistory被多次调用。如何避免这种多次通话?
答案 0 :(得分:0)
使用scrollViewWillBeginDragging和scrollViewDidEndDragging调用,无论用户是否未到达表的末尾,都会调用每个滚动的提取。 相反,您需要实现tableview无限滚动: