我正在使用insertRowsAtIndexPaths
方法向UITableView
中添加新行。添加重复行时会出现问题。
例如,如果我键入"HI"
,然后按回车键,则会在表格中添加一行,其中包含文本"HI"
。如果我返回并键入"Hello"
,然后按回车键,则会再次添加一行,其中包含文本"HI"
。下面是一些代码:
func textFieldShouldReturn(textField: UITextField) -> Bool {
sendMessage(textField.text)
return true
}
func sendMessage(text:String){
var message = Message(text: text)
//global array that stores all the messages
self.messages.append(message)
let indexPathZero : NSIndexPath = NSIndexPath(forRow: 0, inSection: 0)
self.tableView.beginUpdates()
self.tableView.insertRowsAtIndexPaths(NSArray(object: indexPathZero) as [AnyObject], withRowAnimation: UITableViewRowAnimation.None)
self.tableView.endUpdates()
}
非常感谢!
Edit:以下是cellForRowAtIndexPath
代码
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell:GroupChatMessageCell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as! GroupChatMessageCell
cell.message.text = messages[indexPath.row].text
cell.contentView.transform = CGAffineTransformMakeScale (1,-1);
return cell
}
2条答案
按热度按时间x3naxklr1#
看起来你是在数组的末尾追加新的消息,但是在第一行插入了新的行。所以它要求
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
中的第一个数组元素可通过将
self.messages.append(message)
更改为self.messages.insert(message, atIndex: 0)
来修复xj3cbfub2#
实现indexPath处行的估计高度!
尽情享受;)