Как я могу передать данные из одного контейнера в другой, оба встроены в один и тот же контроллер uiview в Swift?
У меня есть родительUIViewController
и у него есть два разных контейнера представления - каждый из них имеет встроенныйUIViewController
внутри. Это выглядит как-то так:
Я хочу изменить метку в правом контейнере, когда пользователь нажимает кнопку, хранящуюся в левом.
До сих пор я мог сделать это, когда кнопка была помещена в родительский контроллер представления, тогда я просто использовал протокол:
в моем родительском компоненте у меня было:
class ParentController: UIViewController {
var delegateEmbedded:HandleEmbedded?
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if (segue.identifier == "segueToFirstEmbeddedController"){
if let embeddedView = segue.destinationViewController as? EmbeddedContainer {
self.delegateEmbedded = embeddedView
}
}
в моем контейнере UIViewController у меня было:
protocol HandleEmbedded: class {
func setName(label: String)
}
class EmbeddedContainer: UITableViewController, HandleYourChat{
func setName(label: String){
print("setting label to \(label)")
}
}
Ситуация выше работает, когда у меня есть кнопка, помещенная в родительский контроллер, и я хочу изменить метку внутри контейнера. Но что происходит и как я должен передавать данные, когда кнопка также встроена, но в другом контейнере, чем метка? Нужно ли передавать данные через родительский контроллер? Какой лучший способ сделать это?