Делегат без перформанса. Не вызывать Swift 5. - PullRequest
0 голосов
/ 04 февраля 2020

Мой протокол (где en "VehicleRegVCs"):

protocol VehicleRegVCDelegate: class {
        func presentedVC(_ currentVC: VehicleRegVCs)
    }

Мой класс покупателя:

class BuyerOwnerInfoViewController: UIViewController {

    weak var delegate: VehicleRegVCDelegate?

    override func viewDidLoad() {
        super.viewDidLoad()

        delegate?.presentedVC(.buyerOwnerInfo)
    }
}

Мой основной класс (где функция делегата "fun c представил V C "внизу не вызывается):

class VehicleRegContainerViewController: ICTViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        setupView()
    }

    func setupView() {
        let buyerVC = getBuyerOwnerInfoVC()
        buyerVC.delegate = self
    }
}

extension VehicleRegContainerViewController: VehicleRegVCDelegate {
    func presentedVC(_ currentVC: VehicleRegVCs) {

    }
}

Я ожидаю, что" представил V C "будет вызван ... Я тоже сделал делегата ...

и в Расширение UIViewController Я сделал эту функцию ...

    func getBuyerOwnerInfoVC() -> BuyerOwnerInfoViewController {
        let vc = UIStoryboard.exciseAndTaxation.instantiateViewController(withIdentifier: "BuyerOwnerInfoViewController") as! BuyerOwnerInfoViewController
        return vc
    }

1 Ответ

1 голос
/ 04 февраля 2020

ViewController внутри контейнера ViewView подключается с помощью segue. Вы можете использовать метод prepareForSegue, чтобы получить контроллер и назначить ему делегата.

ПРИМЕЧАНИЕ : Go для раскадровки, щелкните переход, соединяющий представление контейнера и контроллер представления, и назначьте ему идентификатор. В приведенном ниже примере я использовал «yourSegueIdentifier», замените его своим идентификатором.

class VehicleRegContainerViewController: ICTViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
    }


    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
         if let buyerVC = segue.destination as? BuyerOwnerInfoViewController {
             buyerVC.delegate = self
         } else {
             print("Error in segue")
         }
     }
}
...