[英]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.