Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 如何从另一个视图控制器中删除tableview中的单元格?_Swift_Uitableview_Delegates_Delete Row - Fatal编程技术网

Swift 如何从另一个视图控制器中删除tableview中的单元格?

Swift 如何从另一个视图控制器中删除tableview中的单元格?,swift,uitableview,delegates,delete-row,Swift,Uitableview,Delegates,Delete Row,我正在尝试从另一个视图控制器删除tableview中的单元格。我已经对我的代码进行了建模,类似于下面发布的问题,但是当在DeleteVC中按下delete按钮时,我似乎仍然无法成功删除CarroEVC中选定的行/单元格 旁注:单元格中有一个按钮可以弹出DeleteVC,我在按下CalorieVC:DeleteRowInTableviewDelegate中的deleteBtn时也遇到了一个错误,let picked说线程1:致命错误:索引超出范围 从数据源中删除该值 删除表格单元格 exte

我正在尝试从另一个视图控制器删除tableview中的单元格。我已经对我的代码进行了建模,类似于下面发布的问题,但是当在DeleteVC中按下delete按钮时,我似乎仍然无法成功删除CarroEVC中选定的行/单元格

旁注:单元格中有一个按钮可以弹出DeleteVC,我在按下CalorieVC:DeleteRowInTableviewDelegate中的deleteBtn时也遇到了一个错误,
let picked
说线程1:致命错误:索引超出范围


  • 从数据源中删除该值
  • 删除表格单元格

    extension CalorieViewController: DeleteRowInTableviewDelegate {
      func deleteRow(inTableview rowToDelete: Int) {
        if caloriesItems.count > rowToDelete {
          calorieItems.remove(at: rowToDelete)
          tableView.deleteRows(at: [IndexPath(row: rowToDelete, section: 0)], with: .automatic)
        } else { 
            print("index not present")
          }
      }
    }
    
  • 不要仅仅为了删除一行而调用reloadData。这是个坏习惯。 改用deleteRows

  • 从数据源中删除该值
  • 删除表格单元格

    extension CalorieViewController: DeleteRowInTableviewDelegate {
      func deleteRow(inTableview rowToDelete: Int) {
        if caloriesItems.count > rowToDelete {
          calorieItems.remove(at: rowToDelete)
          tableView.deleteRows(at: [IndexPath(row: rowToDelete, section: 0)], with: .automatic)
        } else { 
            print("index not present")
          }
      }
    }
    
  • 不要仅仅为了删除一行而调用reloadData。这是个坏习惯。 改用deleteRows



    我刚刚运行了它,我收到了相同的错误线程1:致命错误:当按下deleteBtn时,卡路里元素的索引超出范围。删除(at:rowtodelet)。另外,我没有否决你的回答,而是更新了答案。似乎您要传递的索引在卡路里项目中不存在。尝试传递rowToDelete=0,然后签入日志,它只显示“索引不存在”,但好的一面是,它不再会损坏模拟器,但仍然失败删除分区中的单元格在TableView中有多个分区,你也需要得到这个部分<代码>[IndexPath(row:rowToDelete,section:0)]这里我们还需要传递section我刚刚运行了它,我得到了相同的错误线程1:致命错误:索引超出了
    卡路里项目的范围。按deleteBtn时删除(at:rowToDelete)
    。另外,我没有否决你的回答,而是更新了答案。似乎您要传递的索引在卡路里项目中不存在。尝试传递rowToDelete=0,然后签入日志,它只显示“索引不存在”,但好的一面是,它不再会损坏模拟器,但仍然失败删除分区中的单元格在TableView中有多个分区,你也需要得到这个部分
    [indepath(行:rowToDelete,节:0)]
    这里我们还需要传递节不需要使用
    协议DeleteRowInTableviewDelegate来删除。将项目数组从
    CalorieViewController
    传递到
    DeleteViewController
    并从项目数组中删除所需的项目另一方面,
    CalorieViewController
    override
    视图将出现
    方法并放置
    tableview.reload()
    我有点困惑,不知道该怎么做。你能给我举个例子吗?把你的代码示例项目发给我。我能收到你的电子邮件吗?这是我的邮件
    nazmulcsharp@gmail.com
    和Skype
    nazmulkp1
    无需使用
    协议删除RowIntableViewDelegate
    即可删除。将项目数组从
    CalorieViewController
    传递到
    DeleteViewController
    并从项目数组中删除所需的项目另一方面,
    CalorieViewController
    override
    视图将出现
    方法并放置
    tableview.reload()
    我有点困惑,不知道该怎么做。你能给我举个例子吗?把你的代码示例项目发给我。我能收到你的电子邮件吗?这是我的邮件
    nazmulcsharp@gmail.com
    和Skype
    kp1
    extension CalorieViewController: DeleteRowInTableviewDelegate {
      func deleteRow(inTableview rowToDelete: Int) {
        if caloriesItems.count > rowToDelete {
          calorieItems.remove(at: rowToDelete)
          tableView.deleteRows(at: [IndexPath(row: rowToDelete, section: 0)], with: .automatic)
        } else { 
            print("index not present")
          }
      }
    }