у меня 3 UIViewControllers
.ContainerVC
, который содержит 2 контейнера.Первый контейнерный вид DashboardVC
, а второй SidebarVC
.DashboardVC
охватывает весь экран, а SidebarVC
- снаружи.
У меня есть ведущее ограничение для SidebarVC
, которое должно быть анимировано, а SidebarVC
должно скользить (с левой стороны).На DashboardVC
у меня есть UIBarButtonItem
, и когда она нажата, она должна выполнить анимацию.Проблема в том, что я делаю что-то не так с делегатом, и когда ContainerVC
соответствует протоколу, ничего не происходит.
PS: Мне очень трудно понимать протоколы / делегатов, несмотря на то, что я смотрел кучу разных видео по этой концепции.Вот код:
Панель управления VC
protocol SideBarDelegate {
func showMenu()
func hideMenu()
}
class DashboardVC: UIViewController {
var delegate: SideBarDelegate?
var isSideMenuOpen = true
@IBAction func menuButtonPressed(_ sender: UIBarButtonItem) {
if isSideMenuOpen {
delegate?.showMenu()
isSideMenuOpen = false
}
else {
delegate?.hideMenu()
isSideMenuOpen = true
}
}
}
Контейнер VC
class ContainerVC: UIViewController {
@IBOutlet weak var sideBarMenuLeadingConstraint: NSLayoutConstraint!
}
extension ContainerVC : SideBarDelegate {
func showMenu() {
sideBarMenuLeadingConstraint.constant = -290
UIView.animate(withDuration: 0.3) {
self.view.layoutIfNeeded()
}
}
func hideMenu() {
sideBarMenuLeadingConstraint.constant = 0
UIView.animate(withDuration: 0.3) {
self.view.layoutIfNeeded()
}
}
}