1

私は少し調査を行い、ここで見つけた他の回答を読みましたが、実際に機能するものは見つかりませんでした。何かが投稿されたときに投稿に移動したいアプリがあります。投稿を表示しているときに戻るボタンを押すと、2つのビューに戻る必要があります。基本的に、作成ビューをスキップします。

以下は私が試したものですが、それは

警告:ビューがウィンドウ階層にないものを提示しようとしています!

-(IBAction)post{
    [[self presentingViewController] dismissModalViewControllerAnimated:NO];
}

-(void)viewDidDisappear:(BOOL)animated{
    [super viewDidDisappear:animated];
    ViewPostViewController *dvController = [[ViewPostViewController alloc] initWithNibName:@"ViewPostViewController" bundle:[NSBundle mainBundle]];
    UINavigationController *nc = [[UINavigationController alloc] initWithRootViewController:dvController];
    nc.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
    [self presentModalViewController:nc animated:NO];
    [nc release];
}
4

3 に答える 3

3

このようなビューの階層を作成しようとしている場合は、おそらく次のものを使用する必要があります。

[self.navigationController pushViewController:ViewController animated:BOOL completion:nil];
[self.navigationController popViewControllerAnimated:BOOL completion:nil];

それ以外の:

[self presentViewController:ViewController animated:BOOL completion:nil];
[self dimissViewControllerAnimated:BOOL completion:nil];

PresentViewControllerは通常、単一のView Controllerを表示してからそれを閉じるために使用されます。通常、チェーン内の複数のView Controllerを表示してから、チェーンに戻る場合は使用しません。

前者は、スタックの概念を使用してビューコントローラをプッシュおよびポップするため、前者をお勧めします。したがって、ルートビューコントローラとして設定された最初のリストから始めて、投稿作成ビューを押してから、3番目のビューを押して投稿に進むことができます。次に、2つのビューコントローラをポップオフして最初のビューコントローラに戻りたい場合は、次を使用できます。

[self popToRootViewControllerAnimated:BOOL completion:nil];

UINavigationControllerリファレンスが役立つ場合があります。

幸運を。

于 2013-01-12T09:57:16.340 に答える
1

別のモーダルビューコントローラがアニメーション化された直後にビューコントローラを表示する場合は、新しいモーダルビューコントローラが表示されないため、遅延させる必要があります。

iOS 5より前では、0.25秒のようなperformSelectorAfterDelayを実行していました。iOS 5以降では、modelViewControllerメソッドは廃止されたため、使用しなくなりました。代わりに、アニメーションが完了したときに呼び出される完了ブロックを提供するpresentViewControllerメソッドを使用します。

于 2013-01-12T07:32:37.650 に答える
0

私はあなたがやろうとしていることについて少し混乱しています。ナビゲーションコントローラーを使用している場合は、表示したり閉じたりするのではなく、プッシュとポップを実行する必要があります。ナビゲーションコントローラーを使用する場合は、popToViewController:animated:を使用して、間にあるコントローラーを通過せずに特定のコントローラーに戻ることができます。ただし、カスタムの戻るボタンを作成するか、コードで作成する必要があります。これは、標準の戻るボタンを使用すると、前のViewControllerにのみ戻るためです。

于 2013-01-12T05:27:52.000 に答える