11

AがモーダルコントローラーBを提示し、モーダルコントローラーCをすべてセグエ経由で提示する3つのビューコントローラーナビゲーションがあります。C には、B に戻るアンワインド セグエがあります。また、A に戻るアンワインドもあります。C が B にアンワインドするアクションを実行すると、C はアンワインドしますが、B をポップして A に戻ります。これは私が望むものではありません。この場合は B にとどまります。以下は、VC C が使用するセグエです。

VC C からセグエを巻き戻す

unwindCancel は、ユーザーが collectionViewCell をクリックして VC B に戻ったときのためのものです。 prepareForUnwind は、VC A の標準的な「キャンセル」ボタンです。

以下は、VC C でアンワインドを呼び出す didSelectItem のコードです。その下は、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;
    }
}

.m ファイルでの VC B の巻き戻し

-(IBAction)unwindCancel:(UIStoryboardSegue *)segue{

    [self.collectionView scrollToItemAtIndexPath:self.colletionCount atScrollPosition:UICollectionViewScrollPositionLeft animated:YES];
}

.m ファイルでの VC A 巻き戻し

-(IBAction)prepareForUnwind:(UIStoryboardSegue *)segue {
}
4

2 に答える 2

2

unwind-segue の識別子と unwind-segue の Action メソッドを混同したようです。

「prepareForUnwind」アクションで unwind-segue を構築し、この unwind-segue の識別子を「unwindCancel」に変更すると、問題が発生します。

unwind-segue の識別子がそのアクション メソッドと一致していることを確認してください。

于 2015-11-04T14:35:47.837 に答える