우리는 잠시 동안 자 마린을 사용하고 최신 아이 패드 응용 프로그램을 개발하면서 이상한 충돌의 원인에 UiViewControllers을 밀어 넣습니다. 다음은 문제입니다.Monotouch 충돌 : B와 UINavigationController가를 교체하고 B
ipad 앱은 A와 B가 기본 NavController로 RootViewCOntroller (예 : A1과 B1)가 있고 APP 시작시에 표시되는 2 개의 탐색 컨트롤러 (예 : A와 B)가있는 스토리 보드를 사용합니다. A1에 2 개의 버튼이 있습니다. 버튼 1을 누르면 NavController B가로드됩니다. NavController A의 버튼 하나를 클릭하면 코드가 실행되는 단계가 나타납니다.
- 스토리 보드 ID를 얻고 storyboard.InstantiateViewCOntroller를 사용하여 NavController B의 인스턴스 : 버튼 이벤트 핸들러에서 , 나는 다음을 수행 AppDelegate에있는 공용 함수를 호출합니다. 는 수퍼에서 NavCOntroller 제거
- (NavCOntroller B의 rootview 컨트롤러 B1로드)를 AppDelegate에 윈도우의 루트 뷰 제어기 B의 상기 레퍼런스를 지정 (UIView.View.RemoveSuperView()을 사용하여).
위의 단계까지 제대로 작동합니다 (iPad에서 rootviewcontroller의 UiView로드를 볼 수 있음).
다음 단계로 인스턴스화 한 후에 다른 UiViewController를 푸시하려고합니다. (내 대상이 2 번째 계층 구조를 보여주기 때문에) (storyboard.InstantiateViewController (identifier). 이건 내가 푸시 된 뷰 컨트롤러를 보여줘야합니다.하지만 .. 다음은 응용 프로그램이 단계 이후에 충돌! 이상 해요 !!!! 는 단순화 된 코드 :
public void SetNavControllerB(UINavigationController navA, UiStoryBoard StoryBoard)
{
navA.View.RemoveFromSuperView();
this.Window.RootViewController = (UiNavigationController)StoryBoard.InstantiateViewController("VC0");
// 'VC0' is the identifier for NavigationController B with RootViewController as "VC1"
// It works great till the above step
UiViewController vc2 = (UiViewController)StoryBoard.InstantiateViewController("VC2");
((UINavigationController)this.Window.RootViewController).PushViewController(vc2, true);
//The above executes with out any exception, but it crashes later.
}
Pleaseeeee 도움 !!!!!!
요나단 주셔서 감사합니다 응답 만. 당신의 대답은 제가 좀 더 나아갈 수 있도록 도와주었습니다. I가 수정 한 다음 UINavigationController가 uiNav = storyBoard.InstantiateViewController ("VC0"); uiNav.SetViewControllers (새 UIViewController에 [{uiNav.ViewController [0] storyBoard.InstantiateviewController ("VC2")}에 해당); 놀랍게도 APP에서 충돌이없는 Nav Controller B의 두 번째 VC가 나타났습니다. 그러나 그것은 또 다른 문제를 제기 : –
위의 설명을 계속 : VC2 다시 버튼을 누르면, 응용 프로그램 충돌. I 맞춤 오른쪽으로 스 와이프 SEGUE 구현 (('뒤로'버튼과 동일한 기능을 수행하는 팝의 ViewController)). 내가 오른쪽으로 문지를 때도 거기에서 부서집니다. 생선을 찾으셨습니까? 다시 감사합니다. –