Для изменения контроллера представления реализация контроллера представления контейнера представляется наилучшим решением. Что касается ваших вопросов:
Существует ли жизнеспособный способ удалить каждое представление при выборе нового пункта меню или каким-либо другим методом.
Да, это выглядит так (например, в HomeViewController): перед добавлением нового представления вызовите этот метод
func clearSubviews() {
for v in self.view.subviews {
v.removeFromSuperview()
}
}
Для , когда строка меню открыта, есть способ прикоснуться к черной части экрана и закрыть ее, не выбирая пункт меню.
просто создайте метод для перехода назад - в основном как animateTransition(...)
, но без изменения чего-либо, кроме фреймов. Затем создайте распознаватель жестов и добавьте его в dimmingView следующим образом:
var recognizer = UITapGestureRecognizer.init(target: self, action: #selector(transitionBack))
dimmingView.addGestureRecognizer(recognizer)
распознаватель жестов не должен вызываться, когда dimmingView alpha установлен на ноль, поэтому он не будет вызываться, когда меню скрыто.
конечно transitionBack
должен иметь пометку @objc
, чтобы в этом распознавателе можно было действовать.
Удачи!