Próbuję dodać kontroler widoku dziecko do UIViewController
zawartej w UINavigationController
z tym kodem:Dodaj widok podrzędny kontroler do UINavigationController
- (void)buttonTapped:(id)sender
{
MyChildController *viewController = [self.storyboard instantiateViewControllerWithIdentifier:@"MyChild"];
[self addChildViewController:viewController];
[self.view addSubview:viewController.view];
[viewController didMoveToParentViewController:self];
viewController.view.alpha = 0.0f;
[UIView animateWithDuration:0.4 animations:^{
viewController.view.alpha = 1.0f;
}];
}
Ale ta jest wynikiem:
Jak widać, UINavigatioBar
i UIToolbar
nadal znajdują się na kontrolerze widoku podrzędnego. Jak mogę umieścić kontroler widoku podrzędnego na wszystkich? Ja już próbował zastąpić kod z:
[self.navigationController addChildViewController:viewController];
[self.navigationController.view addSubview:viewController.view];
[viewController didMoveToParentViewController:self.navigationController];
Ale w ten sposób viewDidAppear:animated
z viewController
nie sprawdzony, nie wiem dlaczego.
Próbuję użyć podejście viewcontroller-kontenera, bo muszę rozmycie tle widok modalnego widzenia kontroler, który jest również półprzezroczysty. Efekt jest taki sam, jak widok powiadomień, który przeciągasz z góry ekranu. Tło jest półprzezroczyste, a także szkło rozmyte/matowe. Dlaczego jeśli dodaję kontrolkę widoku podrzędnego do 'self.navigationController', metoda' viewDidAppear' nie jest wywoływana? –
Hmm ... nie do końca pewny ... czy próbowałeś wywoływać [viewController viewWillAppear: NO]? – JonahGabriel
Tak i nic nie robi. Muszę wywołać '[viewController viewDidAppear: NO]' zaraz po linii '[viewController didMoveToParentViewController: self.navigationController]'. Dlaczego, do cholery, metody nie są wywoływane? W przeciwnym razie, jeśli dodaję kontrolkę widoku dziecka do 'self', a nie' self.navigationController', to działa, ale jak pokazano na powyższym obrazie, widok jest 'wewnątrz' 'navigationController'. –