我有一个3视图控制器导航,其中A呈现模态控制器B,它通过segue呈现模态控制器C. C有一个放松的回到B.它还有一个放松回到A.当我执行C的动作放松到B时,它展开但然后弹出B然后回到A.这不是我想要的,我想要在这种情况下,它留在B.下面是VC C使用的segues。
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 {
}
答案 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的标识符与其操作方法相匹配即可。