Я пытаюсь отправить данные из одного ViewController в другой с делегатом, но, похоже, не могу получить правильный экземпляр
Я пытался установить делегат в разных местах получающего ViewController, включая ViewDidLoad, но делегат в отправляющем ViewController всегда равен нулю.
Из того, что я узнал, это средняя проблема, с которой, похоже, сталкиваются все, и я прочитал довольно много примеров, попробовал их, но безрезультатно. Я не знаю, оставляю ли я что-то или нет. Пожалуйста, пролите немного света, если хотите.
Вот то, чем я закончил.
Отправляющий ViewController:
protocol CreateChatDelegate: class{
func appendChatData(_ sender: CreateChatViewController)
}
class CreateChatViewController: UIViewController {
weak var delegate: CreateChatDelegate!
@IBAction func createChat(_ sender: AnyObject) {
delegate?.appendChatData(self)
if delegate == nil {
print("delegate unsuccessful")
} else {
print("delegate successful")
}
}
Получающий ViewController:
class ViewController: UIViewController{
var createChatViewController: CreateChatViewController!
override func viewDidLoad() {
super.viewDidLoad()
...
}
}
extension ViewController: CreateChatDelegate {
func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
// get the reference to the ViewController
self.createChatViewController = segue.destination as? CreateChatViewController
// set it as delegate
self.createChatViewController?.delegate = self
print("ViewController: delegate successful")
}
}
func appendChatData(_ sender: CreateChatViewController) {
print("ViewController: CreateChatDelegate called")
}
}
этот код выводит "делегат не выполнен", потому что делегат всегда равен nil