У меня есть viewController
, который содержит три текстовых поля.Каждое текстовое поле связано с меткой и использует NSUser Default
, поэтому, когда пользователь пишет что-то в текстовом поле, текст сохраняется с помощью клавиши - и отображается в назначенной ему метке.Это отлично работает.
Два из трех текстовых полей предназначены для пользователя, чтобы написать «вопрос» и «дополнительный идентификатор».В случае, если пользователь не знает, что в них писать, в верхней части экрана есть две кнопки, ведущие к двум различным tableViewControllers
- каждая из которых содержит табличные представления с элементами / параметрами, которые пользователь может выбрать.Я реализовал последовательность для каждого из них, поэтому, когда пользователь нажимает tableViewCell
, текст в этой ячейке передается в правое текстовое поле в viewController1
- и теперь пользователь может нажать сохранить и сохранить этот текст в NSUser Default
и пусть это будет показано в назначенном ярлыке.
Проблема в том, что эти сегменты, конечно, используют ViewDidLoad, чтобы показать переданный текст из вдохновляющих таблиц ViewS.Это означает, что когда вы вводите второй tableViewController с вдохновением после сохранения, вы выбираете «вопрос» из первого, а затем - из-за метода viewDidLoad
- все текстовые поля и метки снова очищаются, и отображается только то, что вы только что передали туда... Итак:
Могу ли я использовать другой метод, кроме viewDidLoad
, для передачи данных в ViewController1?
Или я могу добавить некоторый код в метод viewDidLoad, чтобы он останавливался? "сбросить все метки и текстовые поля каждый раз, когда вы вводите viewController
?
Или мне нужно все об этом по-другому?
Надеюсь, все это имеет смысл - извините задлинное объяснение!: D
Вот соответствующий код из viewController1:
var chosenQuestion:String = ""
var chosenIdentifier:String = ""
override func viewDidLoad() {
super.viewDidLoad()
DiaryQuestionTextField.text = chosenQuestion
RandomIdentifierTextField.text = chosenIdentifier
}
@IBAction func WriteDiaryName() {
let title = "You have now chosen you diary's name. \n \n Do you wish to save this name and continue? \n \n You can always change all the details."
let alert = UIAlertController(title: title, message: nil, preferredStyle: .alert)
alert.addAction(UIAlertAction(title: "Cancel", style: .cancel))
alert.addAction(UIAlertAction(title: "Save", style: .default, handler: { action in
self.defaults.setValue(self.DiaryNameTextField.text, forKey: "DiaryNameKey")
let NewDiaryName = self.defaults.string(forKey: "DiaryNameKey")
self.DiaryNameLabel.text = NewDiaryName
}))
present(alert, animated: true, completion: nil)
}
И, конечно, есть два аналогичных метода для «WriteQuestion» и «WriteExtraIdentifier».
А вот соответствующий код от одного из двух tableViewControllers
с «вдохновением»:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.destination is UpdatingIdentifiers {
let vc = segue.destination as? UpdatingIdentifiers
let selectedRowIndex = self.tableView.indexPathForSelectedRow
let cell = self.tableView.cellForRow(at: selectedRowIndex!)
let label = cell?.viewWithTag(420) as! UILabel
vc?.chosenQuestion = label.text!
}
}
Спасибо!