Я пытаюсь перейти от неэффективных переходов в моем приложении (в которых представления накладываются друг на друга и никогда не отклоняются) на эффективные, в которых представления отклоняются, когда я с ними заканчиваю.
В этом конкретном случае у меня есть Root View Controller, который открывает контроллер View Settings.Когда я выхожу из настроек, я могу перезагрузить Root View должным образом, чтобы отразить любые изменения, сделанные в настройках.Проблема возникает, когда я пытаюсь вновь открыть контроллер просмотра настроек.Мой IBAction запущен, и я получаю из него оператор печати, но представление не отображается.
Почему оно показывается в первый раз, а не во второй?
Я пробовал несколько вариантов перезагрузки View Controller.Представление перезагружается так, как я хочу, но просто не открывается окно «Настройки» во второй раз.
override func viewWillAppear(_ animated: Bool) {
if didOpenFromSettings == true {
reloadViewFromNib()
loadTheView() //Runs the same actions as viewDidLoad()
collectionView.reloadData()
}
}
@IBAction func settingsButtonPressed(_ sender: UIButton) {
print("User attempted to enter settings menu.")
performSegue(withIdentifier: "Settings View", sender: self)
}
Вот как выглядит процесс выхода из настроек:
@IBAction func settingsExitButtonPressed(_ sender: UIBarButtonItem) {
dismiss(animated: true, completion: nil)
// This is used to let the Root View know to only reload itself
// when coming from the settings.
didOpenFromSettings = true
}