Unwind Segue iOS回归1太多VC

时间:2015-10-29 04:09:18

标签: ios uiviewcontroller unwind-segue

我有一个3视图控制器导航,其中A呈现模态控制器B,它通过segue呈现模态控制器C. C有一个放松的回到B.它还有一个放松回到A.当我执行C的动作放松到B时,它展开但然后弹出B然后回到A.这不是我想要的,我想要在这种情况下,它留在B.下面是VC C使用的segues。

unwind segues from VC C

unwindCancel用于用户点击collectionViewCell并返回VC B. prepareForUnwind只是VC A的标准“取消”按钮。

下面是didSelectItem在VC C中调用unwind的代码。下面是VC C中的prepareForSegue。

-(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 {
}

2 个答案:

答案 0 :(得分:3)

当从C转到B时,不要使用unwind segue只有C调用dismissViewController。如果您致力于使用展开segues,请查看here特定部分授权Unwind Segue如何确定其目标视图控制器

答案 1 :(得分:2)

我猜你把unwind-segue的标识符与unwind-segue的Action方法混淆了。

如果你使用" prepareForUnwind"来构建一个unwind-segue。动作,然后你将这个unwind-segue的标识符改为" unwindCancel"。问题会出现。

只需确保unwind-segue的标识符与其操作方法相匹配即可。