从一个视图而不是另一个视图调用委托函数时,Tableview会重新加载。

时间:2018-12-01 00:38:35

标签: ios swift

我正在开发我的应用程序的一部分,用户可以拥有不同的银行,并且该用户可以从银行中兑换信用额。

我遇到的问题涉及三个TableViewControllers:

  1. BankTVC是用户银行的列表。
  2. AddBankTVC是静态表格视图,用户可以在其中填写银行信息
  3. BankDetailTVC是一个视图,您可以在其中查看银行的详细信息并兑换信用额。

BankTVC通过在我的模型中调用一个返回所有银行的函数来使银行在viewDidLoad中列出。通过导航栏中的“添加”按钮可以访问AddBankTVC。通过点击其中具有银行的单元格来访问BankDetailTVC。

func loadBanks() -> [Bank] {

    let bankFetch = NSFetchRequest<NSFetchRequestResult>(entityName: "Bank")
    bankFetch.sortDescriptors = [NSSortDescriptor.init(key: "lastUpdated", ascending: false)]
    let loadedBanks = try! context.fetch(bankFetch)

    if loadedBanks.count == 0 {
        let sampleBanks = addSampleBanks()
        return sampleBanks
    }

    print("Loaded Banks")
    return loadedBanks as! [Bank]

}

BankTVC符合BankModifierDelegate协议,该协议要求它具有一个称为bankWasModified()的函数。这只是从模型中重新加载银行

func bankWasModified() {

    print("Bank was modified")

    banks = bankModel.loadBanks()

    tableView.reloadData()
}

从AddBankTVC调用bankWasModified时,BankTVC将使用新的信息单元进行更新。但是,当从BankDetailTVC调用bankWasModified时,返回到BankTVC时信息不会更新。但是,当我解雇BankTVC然后又重新使用它时,信息将更新。

我知道上下文是从控制台输出中保存的。保存上下文,运行bankWasModified,重新加载库。不知道发生了什么。

0 个答案:

没有答案