У меня есть три viewControllers в моей раскадровке и три класса viewController для каждого из них. Из моего основного viewController я открываю навигационный viewController в стиле модального типа, который представляет собой многоэтапную форму и имеет два представления. Когда пользователь нажимает «Готово» на последнем (что является вторым) представлением, модаль отклоняется и пользователь возвращается на главный экран.Передача делегата в viewcontroller через viewcontroller
Я делаю это с делегатами. и код для кнопки завершения также находится в делегате и помещается в основной файл реализации viewController. Для этого я передал делегат с основного вида на первый вид навигации, а затем с первого взгляда на нажатие «next» я передал делегат ко второму (последнему) представлению (которое имеет кнопку завершения).
прохождение делегата от основных на первую страницу навигации является так:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"CreateCast"])
{
UINavigationController *navigationController = segue.destinationViewController;
CreateCastStepOneVC *createCastStepOneVC = [[navigationController viewControllers] objectAtIndex:0];
createCastStepOneVC.delegate = self;
}
}
прохождения делегата от первого навигационного к второй точке зрения, как это:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"ToCastStepTwo"])
{
CreateCastStepTwoVC *createCastStepTwoVC =
segue.destinationViewController;
createCastStepTwoVC.delegate = delegate;
}
}
вещей сделаны и делегат выполняет свою работу по мере необходимости. Но предупреждение всплывает, который вызывает беспокойство:
Передача «_weak идентификатор» для параметра несовместимого типа «ид»
декларации собственности в первой точки зрения навигации, как это:
@property (nonatomic, weak) id <CreateCastStepOneVCDelegate> delegate;
декларация на имущество второй вид навигации, как это:
@property (nonatomic, weak) id <CreateCastStepTwoVCDelegate> delegate;
Этот способ передачи делегата через контроллер просмотра даже рекомендуется? или есть ли другой лучший способ? – Firdous
Я не вижу причин не использовать делегатов для этого. Этот сиад, я не очень много работал с раскадрой segues, поэтому не совсем хорошо знаком с лучшими практиками. –