Performsegue от другого viewcontroller не работает - PullRequest
0 голосов
/ 28 августа 2018

До сих пор я использовал цель-C и с тех пор решил разрабатывать с swift.

Я понятия не имею, почему этот простой код не работает.

У меня есть два viewController как контейнерное представление из суперпредставления, один называется sideViewController, а другой - dashViewController.

У меня есть переход с идентификатором 'Назначение' из dashViewController в другой viewController, называемый 'nextViewController'

Если я пытаюсь выполнить переход в dashViewController.swift, он работает нормально.

Но почему это не работает, если я пытаюсь использовать его в 'sideViewController'?

@IBAction public func buttonTapped(_ sender: Any) {
    let storyBoard = UIStoryboard(name: "Main", bundle: nil)
    let vc = storyBoard.instantiateViewController(withIdentifier: "dashboardViewController")
    vc.performSegue(withIdentifier: "Appointment", sender: self) //nothing happens
}

В цели C я мог бы использовать синглтон для dashViewController, как показано ниже

[[MainViewController sharedViewController] performSegueWithIdentifier:@"Appointment" sender:nil];

Но в swift следующий код не работает

DashboardViewController.sharedInstance.performSegue(withIdentifier: "Appointment", sender: nil)

Я боролся с этим в течение 2 дней ..

Пожалуйста, помогите мне.

Спасибо

1 Ответ

0 голосов
/ 29 августа 2018

В вашей функции buttonTapped() вы создаете новый экземпляр "dashboardViewController", а затем пытаетесь выполнить переход ... но вы этого не добавили новый виртуальный канал или его представление об иерархии, поэтому, даже если будет выполнен запрос , ничего не видно.

То, что вы хотите сделать, это использовать шаблон протокола / делегата.

Создайте протокол, чтобы ваше нажатие кнопки внутри «sideViewController» могло сказать своему делегату («главному» контроллеру представления) сообщить существующему экземпляру «dashboardViewController» о выполнении перехода.

Протоколы и делегаты функционируют в Swift так же, как в Obj-C ... только другой синтаксис.

...