Привет, я разработал приложение с родительским представлением, которое затем использовало контейнеры для встраивания других представлений, как показано ниже.Xcode с использованием делегата для передачи данных между контроллерами
Сейчас им только работает с левой и центральной емкости, которые являются оба вида таблиц. Основной вид или экран проекта - это мой родительский контроллер, и я хочу, чтобы он передавал данные в и из двух дочерних контроллеров, и я знаю, что лучший вариант - использовать делегатов. Однако каждый пример, на который я смотрел, использует делегаты, создавал и инициализирует новый контроллер представлений, поэтому, например, можно сказать, что левый контейнер вставляет представление с помощью контроллера leftview. Каждый пример имеет эту строку кода.
LeftViewController *sampleProtocol = [[LeftViewController alloc]init];
LeftViewController.delegate = self;
Im мышления я не нужно, чтобы создать новый LeftViewController, так как он поместить его уже в моем списке дочерних контроллеров. Поэтому мой вопрос заключается в том, как получить контроллер из списка дочерних контроллеров и установить родительский элемент в качестве делегата. Я знаю, что это массив, и я могу использовать objectAtIndex, но как узнать, что порядок элементов в массиве не изменится, я не могу назвать его, кроме тега или идентификатора? Спасибо за любую помощь, извините, если вопрос не настолько ясен, что я впервые установил делегатов.
Не используйте индекс, добавляйте конкретную розетку/свойство и устанавливайте контроллер в том, что нужно использовать. – Wain
Для чего-то с таким количеством просмотров данных, я бы создал общий класс диспетчера данных центрального экземпляра, который обрабатывает все ваши данные. Затем вы создаете каждый контроллер представления с набором данных из вашего диспетчера данных. Разрешить контроллерам регистрироваться для уведомлений об обновлении из экземпляра диспетчера данных. Когда контроллер что-то изменяет, при совершении изменения все зарегистрированные заинтересованные контроллеры будут уведомлены и могут решить, что для них означает это изменение. API для каждого контроллера затем сводится к простому перехвату, чтобы вводить те элементы данных, на которые они смотрят/управляют. –