Chcę dodać tableViewController jako kontroler widoku podrzędnego kontenera containerController (pokazany poniżej). Według Apple View Controller Programming Guide można to osiągnąć za pomocą następujących linii kodu w moim containerViewController:Dodaj kontrolkę widoku kontrolera podrzędnego do podglądu kontrolera nadrzędnego widoku
[self addChildViewController:tableViewController];
[self.view addSubview:tableViewController.view];
[tableViewController didMoveToParentViewController:self];
W rzeczywistości, że działa dobrze. Problem polega na tym, że nie chcę dodawać widoku tableViewController jako podglądu widoku głównego containerViewController. Zamiast tego chcę dodać go jako podzbiór widoku containerView (zobacz obraz), który sam jest podzbiorem widoku głównego kontenera ContainViewController. Zmieniłem więc powyższy kod w następujący sposób:
[self addChildViewController:tableViewController];
[self.contentView addSubview:tableViewController.view];
[tableViewController didMoveToParentViewController:self];
Teraz kiedy uruchomić aplikację ulega awarii natychmiast z tego błędu:
Terminating app due to uncaught exception 'UIViewControllerHierarchyInconsistency', reason: 'child view controller: should have parent view controller: but actual parent is:'
Jaki jest problem? Czy nie jest możliwe dodanie widoku childViewController do konkretnego widoku jego kontrolki containerViewController? Lub jak mogę to osiągnąć bez błędu w hierarchii kontrolera widoku?
Czy jesteś pewien, że i ty przetestowane tego kodu? Próbowałem tego i to * robi * robi różnicę, czy dodajesz widok childViewController do widoku głównego konteneraControlViewController lub do któregokolwiek z jego podobrazów. – Mischa
@Mischa Kod źródłowy dołączony do odpowiedzi. Proszę sprawdzić. – Anupdas
+1 dla tableViewController.view.frame = self.contentView.bounds; – onmyway133