我有一个“数字”数组,我在表视图文件中调用该数组以构成表视图单元格。当单击一个时,它会转到一个视图控制器,其中显示有关该单元格的详细信息,并且在该视图控制器中是一个删除按钮。如何从数组中删除项目,然后将数据重新加载到表视图控制器中?
因此,我将其设置为:单击删除按钮时,它将运行退出代码,并从数组中删除该项目,然后重新加载数据。我尝试对其进行测试,但它似乎从未执行。
这是在detailViewController中,在其中运行退出功能并运行协议以从数组中删除项目
func deleteNumber() {
self.delegate?.unwind()
DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) { // Change `2.0` to the desired number of seconds.
self.performSegue(withIdentifier: "unwindToNumbersList2WithSender", sender: self)
}
}
然后在表视图控制器中运行以下命令:
func unwind() {
numbers.remove(at: indexPath.row)
tableView.deleteRows(at: [indexPath], with: .fade)
saveNumbers()
}
我也尝试使用:
func unwind() {
numbers.remove(at: indexPath.row)
tableView.reloadData()
saveNumbers()
}
所以我希望它运行一个删除行或从数组中删除该项目,然后重新加载数据,但是没有一个运行。有什么方法可以将其从详细视图控件中删除吗?
答案 0 :(得分:0)
您可以使用NotificationCenter
进行此操作,
首先,您需要像这样在UIViewController
中添加通知
let DELETE_DATA = "DELETE_DATA".notificationName()
NotificationCenter.default.addObserver(self, selector: #selector(self.delete_data), name: DELETE_DATA, object: nil)
制作一个名为delete_data
@objc func delete_data(_ notification : NSNotification){
let userData = notification.userInfo as? [String:Any] ?? [String:Any]()
// here you can get your wanted index to be deleted.
}
从详细信息视图控制器中,您需要使用要删除的索引发布此通知
let obj = ["index":`your index to be deleted`]
NotificationCenter.default.post(name: DELETE_DATA, object: nil, userInfo: obj)