私はフォーラムの投稿を読んで2時間以上頭を叩いてきましたが、誰かが私を正しい方向に向けるのを手伝ってくれることを願っています。
UITabBarControllerを使用していて、4つのルートビューが関連付けられています。最初のビューでは、ユーザーは写真を撮ることができ(UIImagePicker)、その後、2番目のビューがプログラムで表示されます。2番目のビューが表示されたら、サーバーにajaxリクエストを送信します。
次のコードを使用して、2番目のビューを正常に選択/表示できます。
self.tabBarController.selectedIndex = 1;
ただし、UITabBarControllerDelegateメソッド(ユーザーtabBarContollerがタッチすると正常に呼び出されます):
- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
Apple tabBarController:didSelectViewControllerのドキュメントに記載されているように、は呼び出されません。
バージョン3.0より前のバージョンのiOSでは、このメソッドは、選択したViewControllerが実際に変更された場合にのみ呼び出されます。つまり、同じViewControllerが選択されている場合は呼び出されません。さらに、このメソッドは、選択したViewControllerに対するプログラムによる変更とユーザーによる変更の両方に対して呼び出されました。
だから私の質問は、「プログラムでセカンドビューに切り替えた後、コードを実行してリクエストを行うにはどうすればよいですか?」
また、トレースを入れてみました:
-(void)viewDidAppear
-(void)ViewWillAppear
-(void)viewDidLoad
ただし、tabBarController.selectedIndexが設定されている場合、これらはいずれも呼び出されません。
どうもありがとう