UINavigationController назад кнопка проблема - PullRequest
0 голосов
/ 04 июня 2010

здравствуйте,

У меня есть гибридное приложение для iPhone, которое имеет UITabBarController и 5 вкладок. На каждой вкладке размещается UINavigationViewController, инициализированный корневым контроллером, который является UIViewController, на котором размещается один UIWebView. На определенной конкретной ссылке я нажимаю UITableViewController, свойственный контроллеру навигации (который показывает некоторые данные, хранящиеся локально) и имеет кнопку возврата. Ниже приведен код после синтаксического анализа строки URL-адреса в shouldStartLoadWithRequest: метод.

    UINavigationController *navControl = (UINavigationController *)self.parentViewController;
    CartTableViewController *tabView = [[CartTableViewController alloc] init];
    [navControl pushViewController:tabView animated:YES];
    navControl.navigationBar.hidden = NO;
    return YES;

Это отлично работает. Конкретная ссылка анализируется, и табличное представление помещается в навигационный стек. Когда я нажимаю кнопку «назад» (и да, она показывает «назад», а не имя предыдущего представления, например, «новости»), я получаю другое представление таблицы, но на этот раз кнопка «назад» называется «новости». и когда я нажимаю на это, я возвращаюсь к своему корневому контроллеру. Кажется, я не могу найти, откуда два вида помещаются в стек поверх корневого представления.

Спасибо. Заки

Ответы [ 2 ]

0 голосов
/ 10 июля 2010

Хорошо, я нашел проблему. Мне нужно вернуть NO из shouldStartLoadWithRequest: для такой вещи. Простите за беспокойство

0 голосов
/ 04 июня 2010

Ваша реализация webView: shouldStartLoadWithRequest: navigationType, вероятно, вызывается дважды. Одним из решений будет создание и отправка экземпляра CartTableViewController только в том случае, если экземпляр еще не находится в стеке UINavigationController.

if (![navControl.topViewController isKindOfClass:[CartTableViewController class]]) {
    CartTableViewController *tabView = [[[CartTableViewController alloc] init] autorelease];
    [navControl pushViewController:tabView animated:YES];
    navControl.navigationBar.hidden = NO;
}

Вы также должны выпустить свой экземпляр tabView.

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