내 응용 프로그램의 루트보기 컨트롤러 인 탐색 컨트롤러가 있습니다. 그것은 내 메인 화면입니다. 마스터보기에서 위치 및 상세보기를 나열하는 분할보기 컨트롤러가지도의 위치를 보여줍니다. 분할보기 컨트롤러를 탐색 컨트롤러에 푸시하고 싶지만 분할보기 컨트롤러를 탐색 컨트롤러에 푸시 할 수 없다는 오류가 발생하고 응용 프로그램의 루트보기 컨트롤러 여야합니다. 그래서 열심히 노력했습니다.분할보기 컨트롤러 및 탐색 컨트롤러를 윈도우 루트보기 컨트롤러로 사용
MyAppDelegate *myappdelegate= [[UIApplication sharedApplication] delegate];
UISplitViewController * vc= [[UISplitViewController alloc] init];
vs.viewControllers = [NSArray arraywithObjects......
....
myappdelegate.window.rootViewController= vc;
이것은 작동합니다. 예상대로 애니메이션이없는 분할보기 컨트롤러를 보여줍니다. 그리고 분할보기 컨트롤러를 닫을 때 같은 단계를 수행합니다. 메인 스크린 펜촉으로 내비게이션 컨트롤러를 만들고이 애플 리케이션 델리게이트의 window.rootviewController를 다시 설정합니다. 그리고 성공적으로 메인 화면을 다시로드합니다.
그러나 이것이 올바른 방법이라고 생각합니다. 이 일을하기에 더 적합한 방법이 있습니까?
그리고 분할 뷰 컨트롤러의 하위 컨트롤러를 릴리스 할 수 없습니다. 나는 자식 컨트롤러의 릴리스 방법에 중단 점을 만들었습니다. 그것은 걸리지 않았다. 나는 내 앱의 루트보기 컨트롤러를 탐색 컨트롤러로 설정할 때 오래된 루트보기 컨트롤러 (분할보기 컨트롤러)를 자식과 함께 릴리스해야한다고 생각했습니다. 다음 분할보기 컨트롤러를 닫을 때 아래 코드를 시도했다.
UISplitViewController *oldviewcontroller= (UISplitViewController*) myappdelegate.window.rootViewController;
for (UIViewController *child in oldviewcontroller.viewControllers)
{
[child release];
}
//Setting the navigation controller as window.rootviewController again in here.
이 코드가 없다는 오류 던져
내가 때문에 이미보기를 해제의 생각 "[UIImageView에 __viewDidDisappear이 :] 알 수없는 선택기 인스턴스 0x7d ....로 전송"을, viewdidDisappear에 아무런 이미지 뷰가 없다 행사.
간단히 말해서, 내 질문은 내가 이것을 달성하는 올바른 방법을 사용하고 있습니까? 그렇다면 어떻게 모든 하위보기 컨트롤러를 성공적으로 릴리스 할 수 있습니까?
어떻게 이미지 뷰에 viewDid가 사라질 수 있습니까? 그것을 (viewDidDisappear) UIImageView에서 실수로 호출하고 있습니까? 윈도우의 rootviewController가 마스터 viewController 역할을하는 일반 uiviewcontroller이고 요구 사항에 따라 splitVC 및 navVC를 모달로 표시하면 어떻게됩니까? –
apple docs는 splitVC를 모달로 표시 할 수 없다고 말합니다. 그래서 나는 이것이 해결책이 아니라고 생각합니다. 당신을 비평 해 주셔서 감사합니다. – bselvan