2013-05-07 1 views
0

내 응용 프로그램은 각각 UINavigationButtonsUIButtons입니다 버튼에 서명하고 가입 버튼을 가지고 있습니다. 성공적으로 성공하면 새로운 화면으로 갈 것입니다. PopToRootViewController; 그러나 성공적으로 로그인하면 내 로그인 및 가입 버튼이 계속 표시됩니다. viewDidLoad 메서드에서 호출 된 단추를 표시할지 여부를 결정하는 메서드가 있습니다. 따라서 앱을 다시 중지하거나 실행하면 버튼이 사라집니다. 아무도이 버튼을 숨길 방법에 대한 조언을 줄 수 있습니까? 고맙습니다.PopToRootViewController의 UINavigationButton & UIButton?

보너스 포인트 : 나는 또한 유사한 문제가있는 로그 아웃 버튼이 있습니다; 내보기 컨트롤러가 로그 아웃 버튼을 숨기고 로그인/위로 버튼을 표시해야한다는 것을 깨닫기 전에 앱을 다시 실행해야합니다.

답변

1

문제는이 목적을 위해 거의 적합 있도록 viewDidLoad는 한 번만 호출이다; 보기가 존재하게되고, 인터페이스와 관련이 없습니다. viewWillAppear:을 사용하고 NSUserDefaults에 저장 한 정보 (예 : 사용자가 로그인했는지 여부)를 기준으로 버튼을 표시할지 숨길 지 결정하십시오.

+0

I가 가지고 '(self.signedIn 있으면) { [self.homeView hideSignInButton]; [self showRightBarButton : self.logout]; [self hideLeftBarButton : self.signin]; } 경우 (self.signedIn!) { [자기 hideRightBarButton : self.logout]; [self showLeftBarButton : self.signin]; }' 내 viewDillLoad에서 내 viewWillAppear로 이동하면 '*** 예외로 인해 응용 프로그램 종료'NSInvalidArgumentException ', 이유 :'*** - [__ NSArrayM insertObject : atIndex :] : 개체가 될 수 없습니다. nil'' – user1034868

+0

업데이트 : 따라서이 오류는 내 "숨기기"버튼 코드가 ​​아닌 "표시"버튼 코드와 UINavButtons에서만 발생하는 것으로 보입니다. 이 코드는 다음과 같습니다 : '- (void) showRightBarButton : (UIBarButtonItem *) button { NSMutableArray * toolbarButtons = [self.navBar.rightBarButtonItems mutableCopy]; 경우 { [toolbarButtons addObject : 버튼 ([toolbarButtons containsObject 버튼!]); [self.navBar setRightBarButtonItems : toolbarButtons animated : 아니요]; } }' – user1034868