0

そのため、アプリのビューとしてUITabBarControllerがあり、その最初のタブはUINavigationControllerです。このビュー内に、別のカスタムビューをスタックにプッシュするボタンがあります。

myViewController *vc = [[myViewController alloc] init];
[self pushViewController:myOtherView animated:YES];

クラスにはとmyViewControllerの両方の内部で発生するはずのことがありますが、UITabBarControllerビューが表示された直後にボタンを押すと、どちらのメソッドも呼び出されていないようです。さらに奇妙なことに、「戻る」を押すと、ビューはアニメーション化されず、スタック内のその下のビューが元の位置に戻ります。-viewDidLoad-viewDidAppear:(BOOL)animated

ただし、タブバーの別のタブに移動してから最初のタブに戻り、もう一度ボタンを押すと、カスタムビューコントローラーがアニメーション化され-viewDidAppear:(BOOL)animatedて呼び出され、「戻る」を押すと表示されなくなります。したほうがいい。残念ながら、-viewDidLoad呼び出されることはありません。

私は本当にすべてにInterfaceBuilderを使わないようにしようとしています。このViewControllerを純粋にプログラムで作成したいのですが、これらの奇妙な問題は役に立ちません。誰かがこの奇妙な行動の理由を考えることができますか?

編集:IBを介してView Controllerを作成しても、この動作は引き続き発生します。どうしたんだ?UITabBarControllerに何かをする必要がありますか?

編集#2:ビューを賭ける方法は次のとおりです。

  • UITabBarControler
    • タブ1:UINavigationController
      • スタックにプッシュされるUIViewController
        • スタックにプッシュされるUIViewController
        • など(おそらくより多くのUIViewControllers)
    • タブ2:UIViewController
    • タブ3:UINavigation Controller
      • スタックにプッシュされるUIViewController
        • スタックにプッシュされるUIViewController
4

1 に答える 1

0

投稿したコードがどの種類のオブジェクトに含まれているかはわかりませんが、ボタンアクションを処理している場合は、ナビゲーションコントローラーによって管理されているカスタムビューコントローラーである可能性があります。それが本当なら、あなたは欲しいでしょう[self.navigationController pushViewController:myOtherView animated:YES];

selfが他の種類のオブジェクトまたはself.navigationControllernilの場合は、現在のView Controller構造に関する詳細を追加する必要があります。)

于 2012-09-13T23:28:52.287 に答える