簡體   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