Recarregar tableView após descartar uma viewController
Eu tenho um ViewController (VCA) com um TableView dentro. Nesse ViewController, é possível chamar outro ViewController (VCB). Neste segundo VC, é possível adicionar um item ao plist usado para preencher o TableView no VCA. O problema é que, quando eu salvo o novo item e dispenso o VCB, não consigo recarregar o TableView no VCA.
Eu encontrei muitos exemplos:
Como recarregar tableview de outro controlador de exibição no swift
Atualize os dados de um TableViewController após adicionar item
Atualize a primeira exibição depois de descartar o Popover
A exibição de tabela não está sendo atualizada depois de descartar o popover?
Depois de ler, tentei com este código:
**IN VCB**
import UIKit
protocol AddItemDelegateProtocol {
func didAddItem()
}
class VCB: UIViewController {
var delegate : AddItemDelegateProtocol?
...
}
@IBAction func saveButton(_ sender: Any) {
....
self.delegate?.didAddItem()
dismiss(animated: true, completion: nil)
}
**In VCA**
class VCA: UIViewController, UITableViewDelegate, UITableViewDataSource, AddItemDelegateProtocol {
let addItemVC = VCB()
...
override func viewDidLoad() {
super.viewDidLoad()
addItemVC.delegate = self
...
}
func didAddItem() {
self.tableView.reloadData()
}
mas isso não funciona. Eu não entendo onde estou errado. Você poderia me ajudar?
EDIT: minha solução Eu resolvi desta maneira:
Eu criei um singleton no qual declaro:
class DataManager {
static let shared = DataManager()
var firstVC = VCA()
.....
}
então,em viewDidLoad do VCA:
DataManager.shared.firstVC = self
agora,no saveButton do VCB, eu posso ligar:
@IBAction func saveButton(_ sender: Any) {
........
DataManager.shared.firstVC.tableView.reloadData()
dismiss(animated: true, completion: nil)
}