[iphone] <FirstViewController : 0x2a2c00>의 모양 전환을 시작 / 종료하기위한 불균형 호출

내 앱을 시뮬레이션 할 때이 문제가 발생합니다. 오류나 경고는 아니지만 내 콘솔에 나타납니다. 이전에이 문제를 경험 한 사람이 있습니까?



답변

제 경우에는 테이블 뷰에서 두 개의 탭을 매우 빠르게 클릭하면이 오류가 발생합니다.

그 결과 잘못된 제목 이름이 발생하고 뒤로 버튼이 사라집니다. 누군가 뷰를 푸시 할 때 set animated:NO. 오류가 사라지지만 여전히 이상한 동작이 발생합니다. 두 개의 뷰를 푸시 한 다음 테이블 뷰 화면으로 돌아가려면 두 번 뒤로 돌아 가야합니다.

이 문제를 해결하기 위해 시도한 방법 :

더하다 BOOL cellSelected;

viewWillAppear cellSelected = YES;

didselectcell 델리게이트에서 if (cellSelected){cellSelected = NO; do action ; }

이렇게하면 두 개의 다른 셀을 매우 빠르게 클릭하는 것을 방지 할 수 있습니다.


답변

제 경우에는 항목의 메서드 [self performSegueWithIdentifier:@"SomeIdentifier" sender:self];내에서 트리거 할 때 발생했습니다 .UINavigationControllerviewDidLoad

그것을 viewDidAppear방법 으로 옮기면 문제가 해결되었습니다.

그 이유는 viewDidLoad모든 멋진 애니메이션이 이미 완료된 것은 아니지만 모든 것이 완료 되었기 viewDidAppear때문입니다.


답변

나도이 문제가있다. 이 문제에 대한 두 가지 해결책을 찾았습니다.

  1. 이 솔루션은 위에서 볼 수 있습니다.
  2. UINavigationController이 문제가 해결 된 하위 클래스를 찾았습니다 . 버퍼링 된 탐색 컨트롤러

답변

이를 방지하려면 다른 루프에서 코드를 실행해야합니다.

 double delayInSeconds = 0.1;
        dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC);
        dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
            // Put your code here
[self presentViewController:self.yourModalVC animated:YES completion:nil];
        });


답변

나는 같은 문제에 많은 문제가 있었다. 나는 이것을 이렇게 해결했다

1) UIViewController's지정된 이니셜 라이저를 사용하고 있지 않습니다 initWithNibName:bundle:. 대신 사용하십시오 init.

2) animated:YESNO로 설정 하면 문제가 해결되었습니다. 예.[self.navigationController pushViewController: viewController_Obj animated:NO];


답변

내비게이션 컨트롤러를 사용하여 동일한 문제가 발생했으며 다른 컨트롤러를 푸시했습니다. Buffered Navigation Controller 와 여러 다른 접근 방식 을 사용하려고했지만 작동하지 않았습니다. 그것을 알아내는 데 약간의 시간을 보낸 후 이전 트랜잭션 (애니메이션)이 진행되는 동안 새 뷰 컨트롤러를 푸시하려고하면이 문제가 발생한다는 것을 알았습니다 (약 0.5 초 지속 시간). 어쨌든 내비게이션 컨트롤러를 위임하고 이전 애니메이션이 끝날 때까지 기다리면서 빠른 솔루션을 만들었습니다.


답변

-viewWillAppear, -viewDidAppear, -viewDidLoad, -viewWillDisappear, -viewDidDisappear에서 해당 메서드의 오버로드에서 적절한 수퍼 메서드를 호출하는 것을 잊지 마십시오. 예를 들어 제 경우에는 다음과 같이 메서드 이름이 일치하지 않습니다.

-(void)viewDidAppear
{
 [super viewDidDisappear];
 //some code staff
 ..
}

통지 표시 하고 사라 방법은 일치하지 않는