Unwind Segue iOS возвращается 1 слишком много VC
У меня есть 3 навигации на viewcontroller, где A представляет собой модальный контроллер B, который представляет modal controller C все через segues. C имеет разматывание назад к B. Он также отстегивается назад к A. Когда я выполняю действие для C, чтобы расслабиться до B, он разматывается, но затем появляется B и возвращается к A. Это не то, что я хочу, я хочу это в этом случае, чтобы остаться на B. Ниже приведены segues VC C.
![развернуть segues из VC C]()
unindCancel - это когда пользователь нажимает на collectionViewCell и возвращается к VC B.
prepareForUnwind - это стандартная кнопка "Отмена" для VC A.
Ниже приведен код для didSelectItem, чтобы вызвать разматывание в VC C. Ниже, которое готовитForSegue в VC C.
-(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath{
[self performSegueWithIdentifier:@"unwindCancel" sender:self];
}
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
if ([segue.identifier isEqualToString:@"unwindCancel"]) {
GalleryDetailViewController *detailVC = segue.destinationViewController;
detailVC.colletionCount = self.indexPathToPass;
}
}
VC B разматывается в .m файле
-(IBAction)unwindCancel:(UIStoryboardSegue *)segue{
[self.collectionView scrollToItemAtIndexPath:self.colletionCount atScrollPosition:UICollectionViewScrollPositionLeft animated:YES];
}
VC Откат в .m файле
-(IBAction)prepareForUnwind:(UIStoryboardSegue *)segue {
}
Ответы
Ответ 1
При переходе с C на B, не используйте разматывание, просто используйте C-вызов rejectViewController. Если вы намерены использовать разматывать segues, посмотрите здесь, в частности раздел entitle Как развязать Segue определяет свой контроллер представления назначения
Ответ 2
Я предполагаю, что вы смутили идентификатор разматывания с помощью метода разматывания.
Если вы создадите раскручивание с помощью действия "prepareForUnwind", а затем вы измените этот идентификатор разматывания на "unwindCancel". Появится проблема.
Просто убедитесь, что идентификатор unwind-segue соответствует этому методу действий.