UINavigationControllerを使用してiPhoneアプリケーションに問題があります。私はpushNavigationControllerを使用しているとき、それは正常に動作します。 iPhoneは、次のViewControllerに切り替えながらアニメーションを行います。しかし、ViewControllerの配列とsetViewControllersメソッドを使用すると、アニメーションに不具合が生じ、アニメーションのバグがはっきりと見えるようになります。iPhoneでUINavigationControllerのsetViewControllerを使用しても正しく動作しません。
次のスニペットがルートViewControllerで呼び出されます。条件に応じて、ViewController1に切り替えるか、ViewController2に直接移動する必要があります。後者の場合、ユーザーはvc1に戻ってからルートに戻ることができます。
NSMutableArray* viewControllers = [NSMutableArray arrayWithCapacity:2];
// put us on the stack
[viewControllers addObject:self];
// add first VC
AuthentificationViewController* authentificationViewController =
[[[AuthentificationViewController alloc] initWithNibName:@"AuthentificationViewController" bundle:nil] autorelease];
[viewControllers addObject:authentificationViewController];
if (someCondition == YES)
{
UserAssignmentsListViewController* userAssignmentsListViewController =
[[[UserAssignmentsListViewController alloc] initWithNibName:@"UserAssignmentsOverviewViewController" bundle:nil] autorelease];
[viewControllers addObject:userAssignmentsListViewController];
}
[self.navigationController
setViewControllers:[NSArray arrayWithArray:viewControllers] animated:YES];
ご覧のとおり、2番目のVCを配列に追加し、最後にnavigationControllerスタックをアニメーションで設定します。これは、最初のコントローラのみを追加すると正しく動作します。しかし、アニメーションが2番目のコントローラーに行かなければならない場合、ナビゲーションバーのタイトルは「飛んでいく」ことはありません。代わりに、アニメーションが終了するまで空のタイトルがあります。さらに悪いことに、ナビゲーションバーのタイトルをカスタムボタンに置き換えると、このボタンはアニメーションが終了するまで左上隅に表示されます。それはかなりのバグです。
私は、複数のpushViewControllerメソッドで回避策を使用しようとしましたが、アニメーションが正しく表示されない/感じられません。 pushViewControllerと同じ方法でアニメーションを実行したいここでの唯一の違いは、VCを追加するのではなく、スタック全体を一度に設定することです。ここに別の回避策がありますか?これはフレームワークのバグと見なすことができますか?私はVC2のためだけにpushNavControllerを使用することを考えていましたが、何とかVC1をスタックに挿入しましたが、それは可能ではないようです。
すべてのヒントやアドバイスありがとうございます。 :-)
テクニカルデータ:4.0用にコンパイルしているiOS 4.2を使用しています。
解決策を見つけましたか?はいの場合は、共有してください。私は同様のアニメーションの問題に直面している。 – Pria
いいえ、pushNavigationControllerの通常の動作と同じように機能するソリューションではありません。私はまだVCと呼び出しsetViewControllersの両方を追加しますが、2番目のVCは最初にナビゲーションバーのタイトルを持っていません。私は、アニメーションが終了した後に(私の場合はタイトルボタンです)設定します。とても良く見えませんが、うまくいきます。 – qwertfisch