从Xcode中的另一个视图控制器文件中删除UITableVIewCell

时间:2019-02-01 04:56:01

标签: swift xcode uitableview

我有一个“数字”数组,我在表视图文件中调用该数组以构成表视图单元格。当单击一个时,它会转到一个视图控制器,其中显示有关该单元格的详细信息,并且在该视图控制器中是一个删除按钮。如何从数组中删除项目,然后将数据重新加载到表视图控制器中?

因此,我将其设置为:单击删除按钮时,它将运行退出代码,并从数组中删除该项目,然后重新加载数据。我尝试对其进行测试,但它似乎从未执行。

这是在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()
}

所以我希望它运行一个删除行或从数组中删除该项目,然后重新加载数据,但是没有一个运行。有什么方法可以将其从详细视图控件中删除吗?

1 个答案:

答案 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)