@SatanaKonst

Как активировать переход на Swift?

Народ, подскажите пожалуйста.
Мне надо во время открытия view сделать проверку и выполнить переход.
Сейчас делаю следующим образом
if (login != "" && pass != ""){
                //Проводим авторизацию
                if auth(login: "", pass: "")==true {
                    print("Auth true")
                    if let personalCabinet = self.storyboard?.instantiateViewController(withIdentifier: "ShowPersonalCabinetDetailAction") as? PersonalCabinetInfoView { 
                        personalCabinet.modalTransitionStyle = .crossDissolve 
                        personalCabinet.modalPresentationStyle = .overCurrentContext
                        self.present(personalCabinet, animated: true, completion: nil)
                    }
                }else{
                    print("Авторизация не удалась")
                }
            }else{
                print("Авторизационные даты не заполнены")
            }


В блок с performSegue заходит нормально, но performSegue сам игнорирует.
Код выполняю в override func viewDidLoad()
  • Вопрос задан
  • 160 просмотров
Решения вопроса 1
NSA-bot
@NSA-bot
Можно сделать без Сигвея, например, так:
Не знаю, как у вас называется класс, привязанный к целевому вьюконтроллеру, но предположил, что название ShowPersonalCabinetDetailAction. Если что, поставьте, как у вас.
if (login != "" && pass != ""){
    //Проводим авторизацию
    if auth(login: "", pass: "")==true {
      print("Auth true")
      
      // Вывод контроллера
      if let personalCabinet = self.storyboard?.instantiateViewController(withIdentifier: "ShowPersonalCabinetDetailAction") as? ShowPersonalCabinetDetailAction { // после as? это название класса вашего контроллера, куда переходите, точно не знаю какое, предположил, что такое же как и идентификатор
        personalCabinet.modalTransitionStyle = .crossDissolve //  тут можно поменять на другие типы анимации появления контроллера
        personalCabinet.modalPresentationStyle = .overCurrentContext
        self.present(personalCabinet, animated: true, completion: nil)
      }
      
    }else{
      print("Авторизация не удалась")
    }
  }else{
    print("Авторизационные даты не заполнены")
  }
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@iMaximus
Это не будет работать во viewDidLoad, так как, по сути, view еще не присобачено к окну. Можно попробовать перенести во viewDidAppear. Но код, конечно, не айс, 2 if else вместо guard, не говоря уже о том, что такое пишут в отдельных функциях, a тут, только вызывают. А есть еще страшное слово паттерны :)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы