Когда бы вы ни использовали делегатов, вам нужно передать этот делегат от одного контроллера представления другому контроллеру представления.
Согласно определению Apple:
Делегирование - это простой и мощный шаблон, в котором один объект в программе действует от имени или в координации с другим объектом. Делегирующий объект сохраняет ссылку на другой объект - делегат - и в соответствующее время отправляет ему сообщение. Сообщение информирует делегата о событии, которое делегируемый объект собирается обработать или только что обработал. Делегат может ответить на сообщение, обновив его внешний вид или состояние или другие объекты в приложении, и в некоторых случаях он может возвращать значение, которое влияет на обработку предстоящего события. Основная ценность делегирования заключается в том, что он позволяет легко настраивать поведение нескольких объектов в одном центральном объекте.
Недостающая часть, которую вы делаете, заключается в том, что вы не вызываете делегата для примера, который вы назвали JournalTextDelegate
в своем классе JournalEntryController
, поэтому вам нужно вызвать этот JournalTextDelegate
для JournalPage
.
например: Предположим, вы переходите к другому контроллеру представления методом push
let vc = self.storyboard?.instantiateViewController(withIdentifier: “identifierier”) as! JournalPage
vc.delegate = self // you need to call this delegate
self.navigationController?.pushViewController(notifDetailVCObj, animated: true)
И это будет работать нормально. Для справки см. Документацию https://developer.apple.com/library/archive/documentation/General/Conceptual/CocoaEncyclopedia/DelegatesandDataSources/DelegatesandDataSources.html