Так как iOS 6, для разворачивания иерархии сцены доступны разматывающиеся сегменты. Я пытаюсь принять решение о более чистом/улучшенном/предпочтительном/более ремонтопригодном методе передачи данных в родительский контроллер представления. Есть несколько вопросов, которые касаются этого с технической точки зрения (например, "если у меня есть необходимость, мне еще нужен делегат" ), но я не могу найти много того, что касается вопросов плюсов и минусов.
Вариант 1: используйте делегат.
- Выполнено путем передачи в родительском контроллере представления в качестве делегата, придерживающегося протокола.
- Ребенок вызывает метод протокола для возврата данных.
- Если для родителя требуется проверка данных, возвращаемое значение /dict требуется, чтобы разрешить ребенку обрабатывать ошибки.
- Накладные расходы: определение протокола и один метод в родительском (для проверки и получения данных).
Вариант 2: используйте разматывающий сегмент
- Выполнено, вызвав разворот segue от ребенка.
- Ребенок добавляет segue на свою сцену, перетаскивая кнопку или раскадровку непосредственно в
Exit
и называя segue, так что это может быть сperformSegueWithIdentifier:sender
- Parent реализует
returnFromSegueName
(пользовательский метод, связанный с этим сеансом), чтобы захватить данные из дочернего элемента. - Проверка данных, хотя может быть реализована только путем реализации
canPerformUnwindSegueAction:fromViewController:withSender
- Ошибка проверки данных потребует другого свойства для дочернего элемента, поскольку этот метод принимает только значение BOOL для возвращаемого значения.
- Ребенок добавляет segue на свою сцену, перетаскивая кнопку или раскадровку непосредственно в
- Накладные расходы: два метода, дополнительное свойство и махинации раскадровки.
В целом, делегаты чувствуют себя как более чистый путь, но, возможно, также устарели. Неужели я ошибаюсь, чтобы наклоняться в этом направлении?