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