Контроллер панели вкладок - PullRequest
1 голос
/ 14 июля 2009

У меня следующий вопрос:

В моем проекте у меня есть следующее:

UITabBarController

  ....Some UINAvigationControllers....

 *(1) UINavigationController

      UIViewController (UItableView) - When select one row it goes to...(by push)

                  UIViewController (UItableView)

Моя проблема заключается в том, что когда я щелкаю элемент панели вкладок, я вижу представление viewController, как в прошлый раз, когда я видел это, и не перезагружаюсь в первый раз * (1) в другой раз.

Где мне нужно писать sth каждый раз, когда я щелкаю элемент панели вкладок, я перезагружаю первый вид этого элемента панели вкладок.

Спасибо!

Ответы [ 2 ]

2 голосов
/ 07 августа 2009

Если я правильно понимаю ваш вопрос, вы пытаетесь вернуть контроллер навигации к корневому элементу, когда выбран элемент панели вкладок.

Чтобы сделать это, установите некоторый объект (например, ваш делегат приложения, но это может быть другой объект) в качестве делегата для вашего UITabBarController. (Если вы используете делегат приложения, он будет делегатом для более чем одной вещи, и это нормально.) Затем реализуйте метод tabBarController:didSelectViewController:. В этом методе сообщите выбранному контроллеру представления (который должен быть NavigationController) вернуться к корневому контроллеру представления.

Как то так. Добавьте эту реализацию в ваш класс AppDelegate.m:

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController {
    [viewController popToRootViewControllerAnimated:NO];
}

В вашем файле .xib установите делегата для TabBarController равным AppDelegate. (Если вы программно создаете панель вкладок, вам придется делать это там программно.)

Как вы и подозревали, попытка сделать это в методе viewWillAppear или другом методе контроллера представления, который находится в контроллере навигации, не является правильным подходом. Это метод, выполняемый на контроллере навигации и обнаруженный делегатом панели вкладок.

0 голосов
/ 15 июля 2009

Попробуйте ввести код обратного вызова, чтобы перезагрузить представление в методах viewWillAppear или viewDidAppear. Они оба вызываются каждый раз, когда контроллер представления отображает свое представление на экране.

Также не стесняйтесь копировать и вставлять свой фактический код, это обычно облегчает нашу задачу:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...