iPhone - переключение контроллера представления на панели вкладок и вызов метода - PullRequest
0 голосов
/ 07 января 2010

У меня есть 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 Ответ

2 голосов
/ 07 января 2010

Вы должны поместить любой код, который хотите запустить, когда представление станет видимым, в методе -viewWillAppear: или -viewDidAppear вашего контроллера представления.

РЕДАКТИРОВАТЬ: Чтобы это произошло только при переключении из определенного представления, вы можете создать подкласс UITabBarController, только изменив метод –tabBarController:shouldSelectViewController: , В этом методе вы можете сделать что-то вроде этого:

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

    return YES;
}
...