일부 계산을 수행하는 뷰가 있으며이 시간 동안 backButton을 숨기려고합니다. UINavigationBar에서 backButton의 가시성을 동적으로 변경하십시오.
나는 백 버튼이 새로운 컨트롤러를 열려면이를 사용하고 취소 버튼 :[self.navigationController pushViewController:calcController animated:YES];
이다 나는 계산, 메인 스레드의 모든 시작하는 방법 :
- (void)startSth {
self.viewMode = modeRunning;
[self updateButtons];
[self performSelector:@selector(doSth) withObject:nil afterDelay:0.1];
}
- (void)doSth {
...
self.viewMode = modeFinished;
[self updateButtons];
}
을 그리고이 방법은 버튼의 가시성을 전환해야합니다.
- (void)updateButtons {
BOOL busy = (self.viewMode==modeRunning);
self.navigationItem.hidesBackButton = busy; //back button
self.navigationItem.rightBarButtonItem.enabled = !busy; //cancel button
}
문제 : fi에서 처음에는 예상대로 작동하고 버튼은 숨겨진 다음 다시 표시됩니다. 뒤로 버튼을 클릭하면보기가 팝업됩니다. 두 번째 실행에서는 버튼이 처음부터 누락되었습니다. updateButtons 메서드는 두 번 호출되어 self.viewMode 변수를 로깅하고 busy는 올바른 동작 (처음 1시에 0)을 표시하므로 분명히 hidesBackButton 호출이 작동하지 않습니다.
네비게이션 항목 navigationButton을 nil로 설정하고, 사용자 정의 빈 버튼을 사용하여 setNeedsDisplay 또는 setHidesBackButton : animated :를 호출하여 예제를 시도했지만 모두 성공하지 못했습니다.
아이디어가 있으십니까?