如何重新加载表格视图? Xcode 11
Posted
技术标签:
【中文标题】如何重新加载表格视图? Xcode 11【英文标题】:How can I reload a table view? Xcode 11 【发布时间】:2020-08-11 07:09:40 【问题描述】:我目前正在尝试在tableView中添加一行,我添加视图的代码如下
@IBAction func done(segue:UIStoryboardSegue)
let newContact = segue.source as! NewContactViewController
FirstName = newContact.firstName
LastName = newContact.lastName
print("Adding the name: " + FirstName + " " + LastName + " to the nameArry")
nameArry.append(FirstName + " " + LastName)
print("Added " + nameArry[nameArry.count - 1] + " to name array")
let indexPath = IndexPath(row: myContact.count + contacts.count - 1, section: 0) // Set the indexPath to the lowest part of the array
tableView.beginUpdates() // Starts the update
tableView.insertRows(at: [indexPath], with: .automatic) // Insert row at the lowest part of the table
tableView.endUpdates() // Ends the update
newContact.firstName = "" // Clears the variable "firstName"
newContact.lastName = "" // Clears the variable "lastName"
view.endEditing(true) // Disables Editing, saw it on youtube.
我使用myContact.count + contacts.count
作为 indexPath,因为这就是我在 tableView 上使用的
// Get Number of items in table
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
return (myContact.count + contacts.count)
我收到以下错误:
Thread 1: Exception: "attempt to insert row 4 into section 0, but there are only 4 rows in section 0 after the update"
【问题讨论】:
你为什么要删除一个?let indexPath = IndexPath(row: myContact.count + contacts.count - 1, section: 0)
.... 写下这一行,不要像这样减去 1 ... let indexPath = IndexPath(row: myContact.count + contacts.count , section: 0)
我这样做然后得到这个错误:`线程1:异常:“尝试将第4行插入第0节,但更新后第0节只有4行”`
【参考方案1】:
你为什么要删除一个?
let indexPath = IndexPath(row: myContact.count + contacts.count - 1, section: 0)
....写下这一行,不要像这样减去1 ...
let indexPath = IndexPath(row: myContact.count + contacts.count , section: 0)
因为如果您要添加一行并从总数中减去...那么更新后现有部分中包含的行数等于更新前该部分中包含的行数
【讨论】:
然后我得到这个错误:```线程1:异常:“尝试将第4行插入第0节,但更新后第0节只有4行”```跨度> 您在myContact
或contacts
中添加任何内容吗?
不,只是想通了。【参考方案2】:
我想通了,我没有得到准确的计数,因为我没有向联系人数组添加任何内容。
contacts.append(Contacts(MyContact: nameArry[nameArry.count - 1], Me: ""))
let indexPath = IndexPath(row: myContact.count + contacts.count - 1, section: 0)
【讨论】:
以上是关于如何重新加载表格视图? Xcode 11的主要内容,如果未能解决你的问题,请参考以下文章
如何在快速向上和向下滚动表格时停止自动重新加载表格视图? [关闭]