Popping UIView программно сбой - PullRequest
0 голосов
/ 05 марта 2010

У меня проблемы с программным удалением стеков из вида.Я делаю вещи немного запутанными, что, безусловно, не помогает.Вот что я хочу сделать:

  1. Пользователь находится на одной вкладке контроллера представления вкладок.
  2. Пользователь выбирает элемент из таблицы, который содержит URL.
  3. Приложениепереключается на другое представление вкладки и устанавливает существующий UIWebView для выбранного URL.
  4. Все представления, которые находятся в стеке UIWebView, извлекаются, показывая UIWebView.

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

- (void)openAndDisplayURL:(NSString*)URL {
tabBarController.selectedIndex = 0;

UIViewController *selectedController = tabBarController.selectedViewController;

if ([selectedController isKindOfClass:[UINavigationController class]]) {
    UINavigationController *controller = (UINavigationController*)selectedController;
    NSArray *views = controller.viewControllers;
    for (id view in views) {
        if([view respondsToSelector:@selector(openURLWithString:)]) {
            NSString *completeURL = [NSString stringWithFormat:@"http://%@",URL];
            [view openURLWithString:completeURL];
        } else if ([selectedController isKindOfClass:[UINavigationController class]]) {
            UINavigationController *subcontroller = (UINavigationController*)selectedController;

            [subcontroller.navigationController popViewControllerAnimated:NO];

        }
    }
}
}

Отладка показывает ожидаемое количество просмотров ожидаемого типа.Он правильно входит в блок else, когда необходимо удалить представление, но вызов popViewControllerAnimated: ничего не делает.

Любая помощь будет оценена.

1 Ответ

3 голосов
/ 05 марта 2010

Вы должны вызвать UINavigationController метод popToViewController .

popToViewController: анимированные:

Отображает контроллеры до указанный контроллер представления находится на вершина стека навигации.

  • (NSArray *) popToViewController: (UIViewController *) viewController animated: (BOOL) animated Параметры

ViewController

The view controller that you want to be at the top of the stack.

анимированный

Set this value to YES to animate the transition. Pass NO if you are

настройка контроллера навигации до отображения его вида.

Возвращаемое значение

Массив, содержащий представление контроллеры, которые выскочили из стек. Обсуждение

Для получения информации о том, как навигация панель обновлена, см. «Обновление Панель навигации. ”

...