У меня есть стандартный контроллер представления, выступающий в качестве делегата для модального контроллера представления над ним. Этот контроллер модального представления содержится в контроллере навигации.
После представления модального окна и добавления другого контроллера представления в стек навигации я хочу передать некоторые данные обратно в начальный контроллер представления делегата (который представил модальное окно).
Должен ли я сначала передать сообщение обратно по навигационному стеку в корневой контроллер представления модального навигационного контроллера и просто использовать методы делегата этого контроллера?
OR
Должен ли я просто передать свойство делегата во вложенный контроллер представления, а затем вызвать делегат напрямую с помощью отдельного реализованного протокола. Это работает, но я должен использовать
@property (nonatomic, weak) id delegate;
вместо
@property (nonatomic, weak) id <NestedViewDelegate> delegate;
в противном случае я получаю ошибку несовместимого типа при передаче делегата из контроллера предварительного просмотра в стеке:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
NestedViewController *nest = [[NestedViewController alloc] init];
// @property id <RootViewControllerDelegate> delegate
[nest setDelegate:[self delegate]];
[[self navigationController] pushViewController:nest animated:YES];
}
Какова наилучшая практика для такого сценария?
Спасибо