繁体   English   中英

当点击 UIButton (Swift) 时如何从另一个 ViewController 的 TableView 中删除一个单元格

[英]How to remove a cell from a TableView from another ViewController when tap on UIButton (Swift)

有 2 个 ViewController。 在第一个 ViewController 上有一个带有单元格的表格。 当您单击一个单元格时,会打开第二个 ViewController,其中包含来自单元格的信息和一个按钮,按下时,应删除该单元格并返回到第一个 ViewController。

我在 cellForRowAt 方法中得到 indexForCell

  var data: [String] = []
  var indexForCell: Int?

    private func configData() {
        service.addMessage(offset: offsetStart) { [weak self] result in
            switch result {
            case .success(let dataMessage):
                self?.data = dataMessage
                DispatchQueue.main.async {
                    self?.messageTable.reloadData()
                }
            case.failure(let error):
                print(error)
                DispatchQueue.main.async {
                    self?.showAlert(title: "Error", message: "Error connecting to the server")
                }
            }
        }
    }

    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        let textMessage = data[indexPath.row]
        let infoController = InfoController()
        
        
        infoController.messageLabel.text = textMessage
        indexForCell = indexPath.row
        navigationController?.pushViewController(infoController, animated: true)
    }

但是当我从第二个 ViewController 访问我的 indexForCell 时,我知道我的数据是空的并且 indexForCell = nil

let startController = StartController()
private let deleteButton = CustomButton()

    @objc private func tapDeleteButton() {
        
       //delete cell from 1st ViewController
        startController.messageTable.reloadData()
        navigationController?.popViewController(animated: true)
    }

我需要向 func tapDeleteButton() 添加什么才能成功删除单元格?

非常感谢您!

InfoController里面添加这个属性

 weak var delegate:StartController?

然后在这里设置

 let infoController = InfoController()
 infoController.delegate = self

最后你可以用它来删除

delegate?.deleteItem()
navigationController?.popViewController(animated: true)

并在indexForCell中创建deleteItem方法以使用您之前设置的StartController执行该过程

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM