2015-11-26 1 views
0

Скажите, что у вас есть ViewController, который переходит в дочерний ViewController. Детский ViewController должен быть подготовлен с некоторыми значениями, обычно заданными родительским ViewController в функции prepareForSegue().Каков наилучший способ передачи значений из дочернего ViewController в родительский ViewController в iOS?

Теперь скажите, что некоторое значение в дочернем ViewController обновляется и должно запоминаться при следующем вызове. Каков наилучший способ для дочернего ViewController предоставить родительскому ViewController знать обновленное значение, чтобы его можно было учитывать при последующих вызовах prepareForSegue()?

Просьба подробно рассказать о сохранении/ненасыщенности вашего решения и общих/лучших практиках.

+1

в Objective-C или стрижа вы можете передать свои данные, таким образом, ссылка изменения данных, передаваемых по ссылке от родителей к ребенку у ребенка будет также изменить его в родительский, вам просто нужно обновить представление. –

+0

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

+0

@xpereta просто сделает его доступным в следующий раз, когда экземпляр дочернего VC будет создан. Нет необходимости сохранять значения в синхронизации для каждого обновления. – atineoSE

ответ

1

Вы можете создать делегат из своего дочернего ViewController. Каждый раз, когда ваши значения (вы хотите сохранить) обновляются, отправьте их родительскому ViewController.

См несколько примеров о делегате здесь: http://www.raywenderlich.com/115300/swift-2-tutorial-part-3-tuples-protocols-delegates-and-table-views

+0

Учебное пособие, на которое вы указываете, действительно не охватывает делегатов (только источник данных, возможно, своего рода делегат), и он не связан с вложенными VC. – atineoSE