Мне удалось создать табличное представление с массивом или сообщениями, и когда я постучал в ячейку tableview, он отображает предупреждение и поле uitext, которые вы можете изменить текст таблицы. Теперь я пытаюсь сохранить текст таблицы («сообщение»), когда он изменился. Потому что, когда я перехожу к другому контроллеру представления и возвращаюсь, он не сохраняется. Я новичок в быстром программировании и задаюсь вопросом, как я могу это достичь. Я прочитал некоторые статьи, которые мне нужны для использования nsuserdefaults, но я не знаком с этим. вот мой код ниже. Спасибо, парни.Сохранение текста таблицы после редактирования swift
class Messages: UITableViewController {
@IBOutlet var uitableView: UITableView!
var tField: UITextField!
var index: Int?
var msgArray: [String]!
var messages = ["Message 1", "Message 2", "Message 3", "Message 4", "Message 5", "Message 6"]
override func viewDidLoad() {
super.viewDidLoad()
tableView.delegate = self
tableView.dataSource = self
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return messages.count
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath)
let messagesCell = messages[indexPath.row]
cell.textLabel?.text = messagesCell
return cell
}
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let path = tableView.indexPathForSelectedRow
index = path?.row
changeMessage()
}
func changeMessage() {
let alert = UIAlertController(title: "Message", message: "Enter new preset message", preferredStyle: UIAlertControllerStyle.alert)
alert.addTextField(configurationHandler: configurationTextField)
let doneAction = UIAlertAction(title: "Done", style: UIAlertActionStyle.default, handler:{ (UIAlertAction) in
let modelString = self.tField.text
self.messages[self.index!] = modelString!
self.tableView.reloadData()
})
let cancelAction = UIAlertAction(title: "Cancel", style: .cancel, handler: nil)
alert.addAction(doneAction)
alert.addAction(cancelAction)
self.present(alert, animated: true, completion: nil)
}
func configurationTextField(textField: UITextField!){
if (textField) != nil {
tField = textField
textField.text = messages[index!]
}
}
}
Я бы не использовал пользовательские значения по умолчанию для сохранения данных ячейки таблицы. Пользовательские значения по умолчанию используются главным образом для хранения предпочтений пользователя (например, URL-адрес для их фото профиля) или предпочтений приложения (например, логическое значение, указывающее, должно ли приложение отображать определенный контроллер просмотра при запуске). Если вы просто возитесь с этим проектом, вы можете следовать этому руководству: https://www.raywenderlich.com/145809/getting-started-core-data-tutorial Если это проект, который вы собираетесь потратить много времени, вы должны провести исследование того, как вы собираетесь сохранять данные. – alexisSchreier
Попробуйте это. 'override func viewWillAppear (_ animated: Bool) { super.viewWillAppear (анимированный) self.tableView.reloadData() }' } ' –
" попытаться извлечь все данные, которые вы хотите показать в виде таблицы в методе viewDidAppear, а затем «reload table» в этом методе. –