Создание и представление viewcontroller - PullRequest
0 голосов
/ 31 января 2020

Я переключаюсь между представлениями в моем приложении с помощью следующего кода:

    let storyBoard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
    settingsVC = storyBoard.instantiateViewController(withIdentifier: "SettingsVC") as! SettingsVC
    self.present(settingsVC, animated: true, completion: nil)

Это прекрасно работает, например, из главного меню, после нажатия кнопки. Но я делал это несколько раз после того, как переходил назад и вперед из меню к представлению настроек, и я заметил, что представление загружается столько раз, сколько я перемещался назад и вперед. Так что это, вероятно, создает контроллер представления снова и снова. Как я могу убедиться, что это происходит только один раз. Так есть ли способ проверить, существует ли контроллер представления. Как примечание: я не работаю с контроллером навигации, просто несколько простых контроллеров представления.

Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 31 января 2020

Итак, есть ли способ проверить, существует ли контроллер представления.

Это не существует. Вы сами создаете это здесь, так что вы знаете , что оно создано. Но он также уничтожается, когда происходит обратное, то есть когда контроллер представления, который вы представляете с помощью present, отклоняется. Это ожидается и правильно. Если вы хотите, чтобы состояние сохранялось между экземплярами и восстанавливалось при следующем создании, вы должны сохранить и восстановить его.

0 голосов
/ 31 января 2020

У вас есть несколько вариантов. Я, как и Ayaz, рекомендую делать это в навигационном контроллере, но если по какой-то причине вы этого не хотите, я бы порекомендовал отключить SettingsV C, когда вы закончите с ним. Вы можете сделать это, позвонив self.dismiss(animated: true, completion: nil) после нажатия кнопки «закрыть» или «назад».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...