Обновление представлений tabbarcontroller при выходе из приложения iPhone - PullRequest
0 голосов
/ 04 декабря 2011

У нас есть панель вкладок + навигационное управление проектом.Мы создали панель вкладок через конструктор интерфейса и добавили все элементы вкладок в контроллер панели вкладок через конструктор интерфейса.Наше приложение имеет экран входа в систему, который мы показываем в виде модальной формы в начале.Как только пользователь аутентифицирован, экран входа в систему закрывается (с использованием dismissModalScreen) и отображается MainWindow.Это все работает нормально.

Теперь у нас есть опция выхода из системы, нажав на которую, мы должны показать экран входа обратно.Мы тоже можем это показать.Но проблема в том, что как только пользователь снова проходит аутентификацию, мы хотим, чтобы все экраны были загружены заново.В настоящее время все экраны поддерживают свое состояние и сохраняют предыдущие данные.

Мы пытались сделать следующее:

[выпуск AppDelegate tabBarController];

AppDelegate.tabBarController = nil;

Мы попытались выпустить tabBarControllerи установив его на ноль.Но как только представление отображается, мы не можем выбрать ни одну из вкладок, и представление становится пустым.

Нам нужно:

Как только пользователь заходит во второй раз, какотпустите и перезагрузите каждый контроллер представления, являющийся частью панели вкладок.

Ваша помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 06 декабря 2011

Мы нашли выход. Теперь мы делаем, когда пользователь снова входит в систему, мы выпускаем контроллеры представления, воссоздаем их и устанавливаем обратно на панель uitabbar.

NSMutableArray * arrControllers = [[AppDelegate.tabBarController.viewControllers] mutablecopy]; [arrControllers removeAtIndex: 3]; [arrControllers removeAtIndex: 2];

---- Создание новых контроллеров

UIViewController viewController2 = [[UIViewController alloc] initWithNibName: @ "viewController2" bundle: nil] autorelease];

UIViewController viewController3 = [[UIViewController alloc] initWithNibName: @ "viewController3" bundle: nil] autorelease];

- Создать контроллер Nav

UINavigationController navViewController2 = [[[UINavigationController alloc] initWithRootViewController: viewController2] autorelease];

UINavigationController navViewController3 = [[[UINavigationController alloc] initWithRootViewController: viewController3] autorelease];

[arrControllers addObject: navViewController2];

[arrControllers addObject: navViewController3];

[AppDelegate.tabViewController setViewControllers: arrControllers];

После этого изменения он работает нормально.

Единственная проблема, с которой мы столкнулись, была, если мы выпустим все объекты из массива, мы получим мусор. Это потому, что когда вы выпускаете allObjects, первый контроллер, который является RootViewController, освобождается?

Спасибо

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