Как я могу использовать протокол в сочетании с контроллером навигации? - PullRequest
0 голосов
/ 25 мая 2020

Привет, ребята, у меня снова небольшой вопрос. Как я могу использовать протокол в сочетании с навигационным контроллером. Итак, прежде всего, вот два моих класса:

Контроллер первого представления:

class VC1: UIViewController{

var cons = "nothing"

@IBAction func PRINT(_ sender: Any) {
    print(cons)
}

@IBAction func PRESENT(_ sender: Any) {
    let VC = storyboard?.instantiateViewController(identifier: "VC") as! VC2
    VC.delegate = self
    present(VC, animated: true, completion: nil)
}  }

extension VC1: data {
func give(text: String) {
    cons = text
} }

Контроллер второго представления:

protocol data {
func give(text: String)}

class VC2: UIViewController {

var delegate: data!

@IBAction func SAVEDISMISS(_ sender: Any) {
    delegate.give(text: "Hallo")
    dismiss(animated: true, completion: nil)
}}

А вот и моя раскадровка: введите описание изображения здесь

Итак, теперь я перейду к своей проблеме. Когда я запускаю код, появляется сообщение об ошибке, когда я выполняю любой переход на VC2, потому что при использовании протокола контроллер навигации исключается, но когда я представляю контроллер навигации вместо VC2, протокол больше не работает.

Что я могу изменить, чтобы контроллер навигации не исключался, а протокол работал и то, и другое.

Надеюсь, кто-нибудь может мне помочь, и снова извините за мой плохой английский sh. Надеюсь, ты все поймешь.

Удачного дня или ночи.

1 Ответ

1 голос
/ 25 мая 2020

Замените функцию PRESENT следующим кодом, когда вы пытаетесь представить UINavigationController.

@IBAction func PRESENT(_ sender: Any) {
    let VC = storyboard?.instantiateViewController(identifier: "VC") as! VC2
    VC.delegate = self
    let navigationController = UINavigationController(rootViewController: VC)
    present(navigationController, animated: true, completion: nil)
}
...