Как бы я передавал данные с использованием протоколов из моего View Controller в контейнер внутри него? - PullRequest
1 голос
/ 05 мая 2019

Как передать строковое значение в моем ViewController в контейнер, используя протокол с делегатом?

protocol VCDelegate {
    func passData(theData:String)        
}

class ViewController: UIViewController {

var delegate : VCDelegate?

@IBAction func getRestaurantInformation(_ sender: Any) {

    let ViewC = ViewController()
    let ContainerV = ContainerView()      

    ViewC.delegate = ContainerV
    ViewC.delegate?.passData(theData: "pass this text")

}
override func viewDidLoad() {

    super.viewDidLoad()

}


class ContainerView: UIViewController, FirstVCDelegate {


func passData(theData: String) {

    print(theData)
    textLabelOut.text = theData //it leaves an error "found nil while implicitly unwrapping optional value"

}


@IBOutlet weak var textLabelOut: UILabel!

override func viewWillAppear(_ animated: Bool) {

}
}

Я получаю сообщение об ошибке «Неожиданно найден ноль при неявном развертывании необязательного значения». Но из того, что я понимаю, значение не ноль. Это распечатка. Он просто не передаст его текстовой метке

1 Ответ

1 голос
/ 05 мая 2019

Вы должны загрузить контейнер с

let containerV = self.storyboard!.......

не

let containerV = ContainerView()      

как это делает все торговые точки ноль


Не иметь доступа к выходам видеомагнитофона, пока он не будет представлен

ViewC.delegate?.passData(theData: "pass this text")

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

...