我对快速编程很新,所以可能会问你一个基本的问题,但我需要知道的事情。
我有一个实现,我可以说与机器人聊天。所以控制流程是这样的:
我说“嗨”这必须反映在“聊天”框中,然后从网络服务返回的响应也必须成为聊天消息。
显然,我的消息和来自Web服务的其他响应应该是不同的颜色和样式,我在tableView函数中这样做。
这是我的tableView代码
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var cell:tblCell = tblCell()
let font = UIFont(name:"Helvetica" , size: 14)
if(tableView.isEqual(messageTableView)) {
var chatMessage:ChatMessage = self.messageArray[indexPath.row]
cell=self.messageTableView.dequeueReusableCellWithIdentifier("MessageCell") as! tblCell
dispatch_async(dispatch_get_main_queue()) {
//Determining the size of the chat box
cell.messageText.sizeToFit()
cell.messageText.text = chatMessage.message
cell.messageText.numberOfLines = 0
cell.messageText.font = font
var frame: CGRect = cell.messageText.frame
cell.messageText.layer.cornerRadius = 10
cell.messageText.layer.masksToBounds = true
//if it is a user input message use this
if(chatMessage.messageType == "user") {
cell.messageText.textAlignment = NSTextAlignment.Right
cell.messageText.backgroundColor = self.UIColorFromRGB(0x0099FF)
cell.messageText.textColor = UIColor.whiteColor()
//code to right align the label
if(frame.width <= 148) {
frame.origin.x = 148 - frame.width
}
else {
frame.origin.x = 0
}
cell.messageText.frame = frame
} else if(chatMessage.messageType == “bot”) {
cell.messageText.textAlignment = NSTextAlignment.Left
cell.messageText.backgroundColor = UIColor.lightGrayColor()
}
var size:CGSize = CGSize(width: frame.width + 20, height: frame.height + 20)
cell.messageText.sizeThatFits(size)
if tableView.contentSize.height > tableView.frame.size.height && self.shouldScrollToLastRow {
let offset = CGPoint(x: 0, y: tableView.contentSize.height - tableView.frame.size.height)
tableView.setContentOffset(offset, animated: false)
self.shouldScrollToLastRow = false
}
}
return cell
}
return cell
}
现在我遇到了邮件大小的问题,因为它不会一直返回正确的大小。意思是,当我向上和向下滚动时,盒子的大小不断变化。
我认为问题出在reloadData()上,我不知道应该在哪里调用它。
请注意,我写了一个异步请求解析代码,并根据请求的响应更新聊天。
我做错了什么?
请帮忙
尼基尔