gpt4 book ai didi

swift - 插入新单元格时 TableView 更新错误

转载 作者:行者123 更新时间:2023-11-28 12:17:58 25 4
gpt4 key购买 nike

我有一个从所有一个 xib 文件填充的 UITableView。我试图在单击一个单元格(将由一个单独的 xib 填充)时在一个单元格下方插入另一个单元格。这样做的想法是制作一种下拉菜单。

我目前正在使用下面的代码在选择单元格时运行该函数:

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
//below prints the name of the selected user
print(name[indexPath.row])

var contactNum = ""

//below inserts a new cell into the table view, below the selected cell
// Update Table Data
myTableView.beginUpdates()
myTableView.insertRowsAtIndexPaths([
NSIndexPath(forRow: (indexPath.row)+1, inSection: 0)
], withRowAnimation: .Automatic)
let cell = myTableView.dequeueReusableCellWithIdentifier("DDOCell")
myTableView.endUpdates()

//below reloads the table view after changes are made
myTableView.reloadData()

}

但继续报如下错误

'Invalid update: invalid number of rows in section 0.  The number of rows contained in an existing section after the update (4) must be equal to the number of rows contained in that section before the update (4), plus or minus the number of rows inserted or deleted from that section (1 inserted, 0 deleted) and plus or minus the number of rows moved into or out of that section (0 moved in, 0 moved out).'

有谁知道为什么没有在选定的下方创建具有不同数据源的新单元格的问题?

最佳答案

您收到错误是因为您在调用 insertRowsAtIndexPath 之前没有先更新您的数据模型。鉴于您的 print 语句,您可能需要类似的东西(在 Swift 3 中):

name.insert("some new name", at: indexPath.row + 1)

请注意,此处不需要调用 beginUpdatesendUpdates,因为您只需调用一次 delete|insert|reloadRowsAtIndexPaths .

另请注意,您绝不能在 cellForRowAt 之外调用 dequeueReusableCellWithIdentifier。如果您确实需要使用任何其他方法(例如 didSelectRowAt)从表中获取单元格,请使用 cellForRow(at:)

关于swift - 插入新单元格时 TableView 更新错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45821934/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com