小编典典

“试图从第1节中删除行,但是只有1个节在更新之前”

swift

我正在尝试删除不符合for循环条件的行。但是,我得到的错误提示是:“试图从第1节中删除第0行,但是在更新之前只有1个节。”我以前从未见过,也不知道为什么得到它。

我的代码:

 func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

    let cell = theTableView.dequeueReusableCellWithIdentifier("MyCell") as! TableViewCell
    cell.titleLabel.text = titles[indexPath.row]
    cell.priceLabel.text = prices[indexPath.row]
    cell.descLabel.text = descs[indexPath.row]
    cell.itemImage.image = itemImages[indexPath.row]
    cell.userNumber = phoneNumbers[indexPath.row] as! String
    cell.timeLabel.text = datesHours[indexPath.row]! + "hr"
    cell.distanceLabel.text = String(locations[indexPath.row]!) + "mi"
    cell.viewController = self




    self.theTableView.beginUpdates()

    for (index, number) in self.locations {
        if number <= 5 {
            let indexPath = NSIndexPath(forRow: number, inSection: 1)
            self.theTableView.reloadRowsAtIndexPaths([indexPath], withRowAnimation: .Fade)

        }
    }
    self.theTableView.endUpdates()

阅读 320

收藏
2020-07-07

共1个答案

小编典典

似乎您在告诉该表中将有比实际要显示的行更多的行,然后在事实之后将其删除。

相反,您应该检查数组中的元素是否满足(或之前)的条件numberOfRowsInSection,并将它们放入将实际显示的其他数组中,以便表知道实际将显示多少行。然后,cellForRowAtIndexPath只需使用新创建的数组即可,该数组具有实际显示的数据。

override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        // Return the number of rows in the section.

        self.displayArray = []
        for (index, number) in self.locations {
            if number <= 5 {
               self.displayArray.Add(self.locations[index])
            }
        }
        return self.displayArray.Count
    }

我假设您的错误与您尝试以首先尝试创建表的方法更新表有关。您正在尝试更新尚未完全创建的内容。

2020-07-07