2013-05-07 2 views
0

Мое приложение имеет кнопку входа и кнопку регистрации, которые являются UINavigationButtons и UIButtons соответственно. Либо перейдите на новый экран, который при успехе должен PopToRootViewController; Однако, когда я успешно вхожу, мои кнопки входа и регистрации все еще присутствуют. У меня есть метод, который решает, отображать ли кнопки, вызываемые в методе viewDidLoad. Таким образом, когда я снова останавливаю/запускаю приложение, кнопки исчезают, как должны. Может ли кто-нибудь дать мне совет о том, как скрыть эти кнопки? Спасибо.UINavigationButton & UIButton на PopToRootViewController?

Бонусные баллы: у меня также есть кнопка выхода из системы, которая имеет аналогичную проблему; Я должен перезапустить приложение до того, как контроллер моего представления поймет, что он должен скрывать кнопку выхода и показывать кнопки входа/выхода.

ответ

1

Проблема в том, что viewDidLoad называется только один раз, поэтому он вряд ли подходит для этой цели; это связано с появлением представления и не связано с интерфейсом. Используйте viewWillAppear: и примите решение о том, показывать или скрывать кнопки на основе, скажем, некоторой информации, которую вы сохранили в NSUserDefaults (например, пользователь подписал или нет).

+0

У меня: 'if (self.signedIn) { [self.homeView hideSignInButton]; [self showRightBarButton: self.logout]; [self hideLeftBarButton: self.signin]; } если (! Self.signedIn) { [self hideRightBarButton: self.logout]; [self showLeftBarButton: self.signin]; } '}'} Когда я переношу его в свой viewWillAppear из моего viewDidLoad, он вылетает с «*** Завершающим приложением из-за неперехваченного исключения» NSInvalidArgumentException », причина:« *** - [__ NSArrayM insertObject: atIndex:]: объект не может быть nil'' – user1034868

+0

Обновление: Таким образом, эта ошибка, кажется, вызвана только кодом кнопки «показать», а не кодом кнопки «Скрыть» и только для UINavButtons. Этот код выглядит следующим образом: '- (void) showRightBarButton: (UIBarButtonItem *) кнопка { NSMutableArray * панель инструментовButtons = [self.navBar.rightBarButtonItems mutableCopy]; если (! [Панель инструментовButtons содержитObject: кнопка]) { [панель инструментовButtons addObject: button]; [self.navBar setRightBarButtonItems: панель инструментов Анимированные кнопки: НЕТ]; } } ' – user1034868

Смежные вопросы