Подтвердить что ты не робот

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 {
}
4b9b3361

Ответ 1

При переходе с C на B, не используйте разматывание, просто используйте C-вызов rejectViewController. Если вы намерены использовать разматывать segues, посмотрите здесь, в частности раздел entitle Как развязать Segue определяет свой контроллер представления назначения

Ответ 2

Я предполагаю, что вы смутили идентификатор разматывания с помощью метода разматывания.

Если вы создадите раскручивание с помощью действия "prepareForUnwind", а затем вы измените этот идентификатор разматывания на "unwindCancel". Появится проблема.

Просто убедитесь, что идентификатор unwind-segue соответствует этому методу действий.