0

私はフォーラムの投稿を読んで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が設定されている場合、これらはいずれも呼び出されません。

どうもありがとう

4

1 に答える 1

1

viewWillAppear呼ばれるべきです..私はちょうどそれをテストしました。

UITabBarControllerDelegate別の解決策:

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController

変更を追跡するため。

于 2011-04-17T20:33:10.213 に答える