Передача данных во view model
Пользователь при регитсрации в приложении вводит свое имя, дату и тд. Все это я сохраняю через UserDefaults. В файле Model я храню эти значения для того чтобы показать их потом в таблице или где то еще если понадобится. Это выглядит вот так.
Model.swift
enum UserInfo: Int, CaseIterable
{
case name
case gender
var info:String?
{
switch self {
case .name:
return UserDefaults.standard.string(forKey: "userName")
case .gender:
return UserDefaults.standard.string(forKey: "userGender")
}
}
Также у меня есть таблица где я эти значения вывожу в ячейки. Это дело выглядит вот так.
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: SettingsTableViewCell.identifier,
for: indexPath) as? SettingsTableViewCell
cell?.infoLabel.text = UserInfo.init(rawValue: indexPath.row)?.info
return cell!
}
С этим кодом я получаю в таблице информацию пользователя. Чтобы поменять имя я вызываю другой View controller , на котором пользователь в текстовом поле может сменить имя. Там я сохраняю значение в UserDefaults,но когда возвращаюсь к таблице имя остается прежнее. И менятся только после того как я перезайду в приложение. Раньше в таких ситуацыях я пользовался протоколами, но теперь у меня есть Model, и я не знаю как это реализовать.
Как я могу отобразить сразу новое имя пользователя в таблице после смены его на другом VC ?
Ответы (1 шт):
Вам нужно обновить данные в tableView при возвращении на viewController, можно это сделать так:
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
tableView.reloadData()
}