如何重新加载表格视图? 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行”```跨度> 您在myContactcontacts 中添加任何内容吗? 不,只是想通了。【参考方案2】:

我想通了,我没有得到准确的计数,因为我没有向联系人数组添加任何内容。

contacts.append(Contacts(MyContact: nameArry[nameArry.count - 1], Me: ""))

let indexPath = IndexPath(row: myContact.count + contacts.count - 1, section: 0)

【讨论】:

以上是关于如何重新加载表格视图? Xcode 11的主要内容,如果未能解决你的问题,请参考以下文章

如何在表格视图中重新加载数据

如何在 iPhone 应用程序中重新加载表格视图

如何在快速向上和向下滚动表格时停止自动重新加载表格视图? [关闭]

如何在编辑表格视图单元格中的文本字段时重新加载所有表格视图单元格 - iOS Swift

如何重新加载 UIView

在我的表格视图中,我没有只有单元格的部分,所以如何在 ios 目标 c 中重新加载表格视图?