"애플리케이션이 활성 컨트롤러를 모달로 제시하려고했습니다"?
방금 NSInvalidArgumentException
전에이 작업을 수행하지 않았던 앱에서이 메시지와 함께 충돌 이 발생했습니다.
응용 프로그램이 활성 컨트롤러 UITabBarController : 0x83d7f00을 모달로 표시하려고했습니다.
나는이 UITabBarController
난에서 작성한 AppDelegate
및 그것을 배열을 줄을 UIViewControllers
.
그중 하나를 탭하면 모달로 제시하고 싶습니다. 위임 메서드를 구현하여 수행했습니다.
- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController
해당 뷰 컨트롤러가 모달로 표시하려는 클래스이면 NO를 반환하고
[tabBarController presentModalViewController:viewController animated:YES];
그리고 이제 그 오류가 발생합니다. 이는 다른 곳에서 활성화 된 뷰 컨트롤러를 모달로 표시 할 수 없음을 의미하는 것 같습니다 (탭바에서 ...). XCode 4.2 Developer Preview 7에 있다고 말해야합니다. 이것은 iOS 5입니다 (NDA에 대해 알고 있지만 금지 된 세부 정보를 제공하지 않는 것 같습니다). 현재 iOS4 SDK에 대해 컴파일이 충돌하는지 테스트 할 XCode 설치가 없지만 거의 완전히 그렇지 않습니다.
이 문제를 경험 한 사람이 있는지 또는 제안 사항이 있는지 물어보고 싶었습니다.
다음과 같이 인스턴스화 된 세 개의 뷰 컨트롤러가 있다고 가정합니다.
UIViewController* vc1 = [[UIViewController alloc] init];
UIViewController* vc2 = [[UIViewController alloc] init];
UIViewController* vc3 = [[UIViewController alloc] init];
다음과 같이 탭 표시 줄에 추가했습니다.
UITabBarController* tabBarController = [[UITabBarController alloc] init];
[tabBarController setViewControllers:[NSArray arrayWithObjects:vc1, vc2, vc3, nil]];
이제 다음과 같이하려고합니다.
[tabBarController presentModalViewController:vc3];
Tab Bar Controller에는 사용자가 지정한 뷰 컨트롤러에 대한 죽음 그립이 있기 때문에 오류가 발생합니다. 탭 표시 줄의 뷰 컨트롤러 배열에 추가 할 수 없거나 모달로 표시 할 수 없습니다.
Apple은 사용자가 UI 요소를 특정 방식으로 취급하기를 기대합니다. 이것은 아마도 휴먼 인터페이스 가이드 라인 어딘가에 "우리는 당신이 이것을하기를 원하지 않기 때문에 이것을하지 마십시오"라고 묻혀있을 것입니다.
나도 같은 문제가있어. 해고 직후 뷰 컨트롤러를 제시하려고합니다.
[self dismissModalViewControllerAnimated:YES];
애니메이션없이 시도하면 완벽하게 작동하므로 문제는 컨트롤러가 여전히 살아 있다는 것입니다. 가장 좋은 해결책은 dismissViewControllerAnimated:completion:
iOS5 에서 사용하는 것 같아요
제 경우에는 다른 뷰 컨트롤러에서 viewController (TabBarViewController에 viewController의 참조가 있음)를 제시하려고 시도했지만 위의 메시지와 함께 충돌했습니다. 그 경우에는 제시를 피하고 사용하실 수 있습니다
viewController.isBeingPresented
!viewController.isBeingPresented {
// Present your ViewController only if its not present to the user currently.
}
누군가를 도울 수 있습니다.
나는 같은 문제가 있었다. 이 코드를 시도 할 수 있습니다.
[tabBarController setSelectedIndex:1];
[self dismissModalViewControllerAnimated:YES];
그냥 제거
[tabBarController presentModalViewController:viewController animated:YES];
그리고 유지
[self dismissModalViewControllerAnimated:YES];
'IT story' 카테고리의 다른 글
.BAT 스크립트를 어떻게 디버깅 할 수 있습니까? (0) | 2020.09.01 |
---|---|
주요 이메일 클라이언트 소프트웨어에서 데이터 URI 지원은 어떻습니까? (0) | 2020.09.01 |
무료 NCrunch 대안 (0) | 2020.09.01 |
HttpSecurity, WebSecurity 및 AuthenticationManagerBuilder (0) | 2020.09.01 |
Java에서 중첩 된 스트림 및 작성자를 닫는 올바른 방법 (0) | 2020.09.01 |