首页 > 解决方案 > 如何将一个 VC 的文本字段数据保存到另一个 VC 的表格视图中?

问题描述

我的tableView第一个视图控制器中有一个解析本地 JSON 数据的行。另外,我的UIViewController第二个视图控制器中有一个有 6 个文本字段和保存按钮的控制器。当在我的第二个视图控制器中按下保存按钮时,我想将 textFields 数据保存到我的第一个视图控制器的 tableView 中。如何保存此文本字段数据以显示在我的 tableView 中?

我尝试将文本字段数据写入我的本地 json 文件,如下所示:

func writeToJSON() {
    let foo = Member(name: "Emre", age: 25, location: "Izmir", github: "emrdgrmnci", company: CompanyClass(position: "Software", years: 0))
    do {
        let data = try JSONSerialization.data(withJSONObject: foo, options: [])
        if let documentDirectoryUrl = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first {
            let fileUrl = documentDirectoryUrl.appendingPathComponent("company.json")
            try data.write(to: fileUrl)
        }
    } catch {
        print(error)
    }
}

如果我CoreData用来保存我的 textfileds 数据并在我的另一个视图控制器的 tableView 行中显示怎么办。他们是否与我在 tableview 中的本地 json 文件数据混淆?

标签: iosjsonswiftuitableviewcore-data

解决方案


只要您为表选择 1 个数据的真实来源(文件管理器或核心数据),他们就不会感到困惑。但是如果你的本地数据库和它里面的对象关系不复杂,那么 FileManager 就足够了。按下保存按钮后,似乎第一个视图控制器出现在屏幕上,就像后退按钮机制。您可以通过在viewWillAppear中从文件管理器加载数据并在viewWillAppear中调用tableView.reloadData来使用简单的方法,但是如果不在viewDidLoad中加载数据和填充tableView,则不是那么合适的方法,因此您可以使用NotificationCenter通知第一个视图控制器如果数据有变化重新加载tableView的数据

编辑:您可以找到更多选项在视图控制器之间传递数据,尤其是在此处使用通知中心https://learnappmaking.com/pass-data-between-view-controllers-swift-how-to/#nsnotificationcenter


推荐阅读