Я следил за видеоуроком, который учит меня программному созданию приложения iOS без раскадровки.
Все идет хорошо, и мне все в нем нравится, однако у меня есть небольшая проблема.
Я только на полпути, и я заметил потенциальную проблему с памятью, как показало мне руководство, для каждого следующего просмотра я представляю это так:
let ChooseCategoryController = ChooseCategoryViewController()
present(ChooseCategoryController, animated: true, completion: nil)
а затем я представляю еще один вид оттуда. И чтобы вернуться назад, я также представляю другую точку зрения. Я заметил при запуске приложения, что использование памяти увеличивается и увеличивается.
Есть ли способ, когда я представляю новое представление, я могу определить, какие представления открыты и закрыть все остальные?
Я думал, может быть, что-то в разделе завершения, но я борюсь, так как я довольно новичок.
Заранее спасибо.
Обновление1
Попробовав приведенное ниже решение и добавив файл self. как xcode попросил меня, чтобы у меня был этот код:
dismiss(animated: false, completion: {
self.present(DisplayQuestionsViewController(), animated: true, completion: nil)
})
Я получаю это предупреждение:
Предупреждение: Попытка представить ‹ triviaGameApp.DisplayQuestionsViewController: 0x7fb39481ce00 › на ‹ triviaGameApp.ChooseCategoryViewController: 0x7fb392e019f0 › чье представление не находится в иерархии окон!
Если это актуально. Этот код запускается при щелчке ячейки UICollectionView в ChooseCategoryViewController().
Обновление 2:
Сейчас я изменил код на следующий:
dismiss(animated: false, completion: {
self.parent?.present(DisplayQuestionsViewController(), animated: true, completion: nil)
})
Как указано на плакате ниже. Текущий контроллер представления теперь отключается, но не загружает новый.
parentViewController
, чтобы представить новыйViewController
, поскольку текущий являетсяdismiss
. Это было также то, что предупреждение пытается сказать вам. 24.11.2016push
иpop
, как это делает большинство приложений. 24.11.2016dismiss
будет работать, только если твойViewController
будетpresent
. Это не сработает, если этоrootViewController
изwindow
. Мне нужно лучше понять вашу иерархию представлений, чтобы иметь возможность помочь вам. Возможно, эта ссылка даст вам лучшее понимание: code.tutsplus.com/tutorials/ 25.11.2016