как запретить пользователю вызывать один и тот же контроллер представления дважды подряд из выдвижного меню настроек? - PullRequest
0 голосов
/ 02 марта 2019

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

private func toProfile() {
    guard let appDelegate = UIApplication.shared.delegate as? AppDelegate,
        let tbc = appDelegate.window?.rootViewController as? TabBarController,
        let nav =  tbc.viewControllers?[tbc.selectedIndex] as? UINavigationController else { return }
    let profileVC = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "profileVC")
    nav.pushViewController(profileVC, animated: true)
    delegate?.dismissSettingsVC()
}

Я пытался:

if nav.viewControllers.last == profileVC {
    print("Do nothing")
} else {
    nav.pushViewController(profileVC, animated: true)
}

, но это никогда не говорит, что оба равны.Как сделать оператор if, чтобы проверить, был ли последний нажатый контроллер представления profileVC?

1 Ответ

0 голосов
/ 02 марта 2019

Вам необходимо проверить тип

if nav.viewControllers.last is ProfileVC {
   print("Do nothing") 
}
else { 
  nav.pushViewController(profileVC, animated: true) 
}

В настоящее время вы сравниваете 2 экземпляра одного типа и наверняка они не равны

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