1

私のライブラリには、入力ビューにポップする読み込みビューがあります。ユーザーが入力ビューを使い終わったら、読み込み中のビューに戻って魔法をやり直し、完了すると 3 番目のビューが表示されます。

さて、使いやすさの観点から、読み込み中のビューに「スライドバック」したくありません。また、既にメモリに読み込み中のビューがある場合に、新しい読み込み中のビューを割り当てたくもありません。

ビューを前方にスライドさせながら popToRootViewController できる方法はありますか? (はい、読み込みビューの戻るボタンを削除します)..

4

2 に答える 2

2

さて、ここに行きます-おそらくこのようなものを使ってみてください

// This goes in whatever view controller you want to pop with
- (void)popToRootWithForwardAnimation
{
    NSMutableArray * viewControllers = [[[self.navigationController viewControllers] mutableCopy] autorelease]
    UIViewController * rootViewController = [viewControllers objectAtIndex:0]
    [viewControllers removeObjectAtIndex:0]; // try using with and without this line?
    [viewControllers addObject:rootViewController];

    [self.navigationController setViewControllers:viewControllers animated:YES];
}

// This goes in the root view controller
- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated]
    NSMutableArray * viewControllers = [[[self.navigationController viewControllers] mutableCopy] autorelease]
    if ([viewControllers count] > 1)
    {
        [viewControllers removeAllObjects];
        [viewControllers addObject:self];

        [self.navigationController setViewControllers:viewControllers animated:NO];
    }

    … 
    …
}
于 2011-10-26T20:32:45.913 に答える
2

うーん、より良いアプローチは、ナビゲーション スタックでプッシュ/ポップするよりも、モーダルな方法でビューを反転することだと思います。したがって、次のView Controllerをプッシュしている入力ビューで行う必要があります。

MagicViewController *magicVC = [[MagicViewController alloc] init];
magicVC.setModalTransitionStyle  = UIModalTransitionStyleFlipHorizontal;
[self presentModalViewController:magicVC animated:true];

次に、Magic View コントローラーがその魔法を実行し終わったら、その時点 (そうでなければポップする場所) で実行します。

[self dismissModalViewControllerAnimated:true];

これは、単純なナビゲーションを行うよりもはるかにクールです。

モーダル ビュー コントローラー ガイドを参照してください。

于 2011-10-24T14:10:32.880 に答える