iPhone - 在标签栏中切换视图控制器并调用方法

时间:2010-01-07 20:05:36

标签: iphone uinavigationcontroller uitabbarcontroller delegates

我的应用程序中有一个TabBar,我在AppDelegate中执行此操作:

...
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;

这很有效。它切换到这个ViewController!此ViewController已加载,并且调用了viewDidLoad方法。在这个viewDidLoad方法是一个方法调用:

[self myMethod];

我想,如果视图切换到此ViewController,则应始终调用此“myMethod”。 我怎样才能做到这一点?在我的AppDelegate行

之前
self.myTabBarController.selectedViewController = navigationTest2Controller;

???或者是否每次选择/切换到ViewController时都会调用另一个委托?

有谁知道这个?

提前多多感谢&最诚挚的问候。

1 个答案:

答案 0 :(得分: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;
}