Согласно документации iOS, цепочка респондента используется для передачи сенсорных событий «вверх по цепочке».Он также используется для действий, генерируемых элементами управления.Хорошо.
Что я действительно хотел бы сделать, так это отправить пользовательское событие "вверх по цепочке".Первый респондент, который поднимет на событие, будет обрабатывать его.Это похоже на довольно распространенную модель, но я не могу найти хорошего объяснения того, как сделать это «способом iOS / Какао».
Поскольку цепочка респондента - это именно то, что мне нужно, я придумалрешение, подобное этому:
// some event happened in my view that
// I want to turn into a custom event and pass it "up":
UIResponder *responder = [self nextResponder];
while (responder) {
if ([responder conformsToProtocol:@protocol(ItemSelectedDelegate)]) {
[responder itemSelected:someItem];
break;
}
responder = [responder nextResponder];
}
Это прекрасно работает, но у меня есть ощущение, что должны быть другие способы справиться с этим.Ходить по цепочке вручную таким способом не очень ... приятно.
Обратите внимание, что уведомления здесь не являются хорошим решением, потому что я хочу, чтобы включались только объекты в иерархии представления, а уведомления были глобальными..
Каков наилучший способ справиться с этим в iOS (и в этом отношении с Какао)?
РЕДАКТИРОВАТЬ :
Что я хочу сделать?
У меня есть контроллер представления, который имеет представление, которое имеет подпредставления и т. Д. Некоторые из подпредставлений имеют определенный тип, который показывает элементиз базы данных.Когда пользователь касается этого представления, на контроллер должен быть отправлен сигнал для перехода на страницу сведений об этом элементе.
Представление, которое обрабатывает касание, находится на несколько уровней ниже основного представления в иерархии представлений.Я должен сообщить контроллеру (или в некоторых случаях конкретному подпредставлению «вверх по цепочке»), что элемент был выбран.
Прослушивание уведомлений было бы вариантом, но мне не нравится это решение, потому что выборэлемент не является глобальным событием.Он строго привязан к текущему контроллеру представления.