0

我一直在阅读论坛帖子并敲打我的头超过 2 小时,希望有人可以帮助我指出正确的方向。

我正在使用 UITabBarController 并有 4 个与之关联的根视图。在第一个视图中,用户可以拍照(UIImagePicker),然后以编程方式显示第二个视图。一旦显示第二个视图,我想向服务器发出 ajax 请求。

我能够使用以下代码成功选择/显示第二个视图:

self.tabBarController.selectedIndex = 1;

但是 UITabBarControllerDelegate 方法(在用户 tabBarContoller触摸时成功调用):

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

没有调用,因为 Apple tabBarController:didSelectViewController 文档指出:

在 iOS 3.0 之前的版本中,仅当所选视图控制器实际更改时才调用此方法。In other words, it is not called when the same view controller is selected. 此外,对所选视图控制器的编程和用户启动更改都调用了该方法。

所以我的问题是:“如何在以编程方式切换到第二个视图后执行一些代码并发出请求?

我还尝试在以下位置添加痕迹:

-(void)viewDidAppear 
-(void)ViewWillAppear 
-(void)viewDidLoad

但是当 tabBarController.selectedIndex 设置时,这些都不会被调用。

非常感谢

4

1 回答 1

1

viewWillAppear应该叫..我刚刚测试过。

另一种解决方案:使用UITabBarControllerDelegatewith

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

用于跟踪更改。

于 2011-04-17T20:33:10.213 回答