我試圖子視圖控制器添加到包含在UINavigationController
這個代碼UIViewController
:子視圖控制器添加到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;
}];
}
不過這是結果:
正如你所看到的,UINavigatioBar
和UIToolbar
仍然在子視圖控制器之上。我怎樣才能把子視圖控制器放在最重要的位置?我已經試過,以取代代碼:
[self.navigationController addChildViewController:viewController];
[self.navigationController.view addSubview:viewController.view];
[viewController didMoveToParentViewController:self.navigationController];
但這種方式的viewController
的viewDidAppear:animated
不會被調用,不知道爲什麼。
我想,因爲我需要模糊模式視圖的背景視圖使用視圖 - 控制容器的方法控制器也是半透明的。效果與您從屏幕頂部拉下的通知視圖相同。背景是半透明的,也是模糊/磨砂玻璃。爲什麼如果我添加一個子視圖控制器到'self.navigationController','viewDidAppear'方法不被調用? –
嗯......不太確定...你有沒有試過調用[viewController viewWillAppear:NO]? – JonahGabriel
是的,它什麼都不做。我需要在行['viewController didMoveToParentViewController:self.navigationController]'後面調用'[viewController viewDidAppear:NO]'。爲什麼這些方法不被調用?否則,如果我將子視圖控制器添加到'self'而不是'self.navigationController',它會起作用,但是如上圖所示,視圖在'navigationController'內部。 –