0

我在我的應用程序的TabBar和我做這在我的AppDelegate:iPhone - 在使用TabBar切換視圖控制器,並調用一個方法

... 
test2ViewController = [[Test1ViewController alloc] init]; 
... 
navigationTest2Controller = [[UINavigationController alloc] initWithRootViewController:test2ViewController]; 

NSArray *myControllers = [NSArray arrayWithObjects:..., navigationTest2Controller, nil]; 
[self.myTabBarController setViewControllers:myControllers animated:NO]; 

現在我有我在的ViewController和問題我想切換到「navigationTest2Controller」。我在我的AppDelegate中執行此操作:

self.myTabBarController.selectedViewController = navigationTest2Controller; 

This works。它切換到這個ViewController!這個ViewController已經被加載,並調用了viewDidLoad方法。在這種viewDidLoad方法是methos電話:

[self myMethod]; 

我想,如果視圖切換到這個視圖控制器這種「myMethod的」應始終被調用。 我該怎麼做?在我的AppDelegate行之前

self.myTabBarController.selectedViewController = navigationTest2Controller; 

???或者是否有另一個代表,每次ViewController被選中/切換時都會被調用?

有沒有人知道這一點?

非常感謝&最好的問候。

回答

2

當視圖在視圖控制器的-viewWillAppear:-viewDidAppear方法中可見時,您應該放置任何想要運行的代碼。

編輯:要做到這一點只有當你從某個視圖切換,你也可以繼承UITabBarController,只修改–tabBarController:shouldSelectViewController:方法。在這種方法中,你可以做這樣的事情:

- (BOOL)tabBarController:(UITabBarController *)tabBarController 
shouldSelectViewController:(UIViewController *)viewController 
{ 
    if (self.selectedIndex == 1 && 
     [viewController respondsToSelector:@selector(myMethod)]) { 
     [viewController myMethod]; 
    } 

    return YES; 
} 
+0

但我只想調用這個「myMethod」,如果我從特定的ViewController切換到這個。所有其他時間,不應該調用此方法。 – Tim 2010-01-07 20:26:30

+0

蒂姆,我已經用一些可能更符合你要求的東西更新了答案。 – 2010-01-07 21:15:15

+0

非常感謝您的幫助! – Tim 2010-01-07 21:57:07

相關問題