swift2 在UITableView中插入RowsAtIndexPaths添加重复行

pdtvr36n  于 2022-11-06  发布在  Swift
关注(0)|答案(2)|浏览(204)

我正在使用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
}
x3naxklr

x3naxklr1#

看起来你是在数组的末尾追加新的消息,但是在第一行插入了新的行。所以它要求func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell中的第一个数组元素
可通过将self.messages.append(message)更改为self.messages.insert(message, atIndex: 0)来修复

xj3cbfub

xj3cbfub2#

实现indexPath处行的估计高度!

-(CGFloat)tableView:(UITableView *)tableView estimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath {
return [self tableView:tableView heightForRowAtIndexPath:indexPath];
}

尽情享受;)

相关问题