2

我試圖從我當前的視圖控制器self轉換爲self.aVC使用視圖控制器遏制使用self.navigationController作爲容器。當我運行下面的代碼時,「子視圖控制器必須有一個共同的父視圖控制器」錯誤彈出,但兩個NSLog顯示相同的parentViewController。transitionFromViewController:toViewController錯誤:子視圖控制器必須有一個共同的父視圖控制器

這似乎是什麼問題?任何幫助表示讚賞。

[self willMoveToParentViewController:nil]; 
[self.navigationController addChildViewController:self.aVC]; 
[self.aVC.view setFrame:self.bottomFrame]; 

NSLog(@"%@",self.parentViewController); 
NSLog(@"%@",self.aVC.parentViewController); 

// __weak __block SBSomeVC *weakSelf = self; 
[self transitionFromViewController:self toViewController:self.aVC duration:0.3 options:UIViewAnimationOptionTransitionNone animations:^{ 
    [self.aVC.view setFrame:self.view.bounds]; 
} completion:^(BOOL finished) { 
    [self.aVC didMoveToParentViewController:self.navigationController]; 
    [self removeFromParentViewController]; 
}]; 

回答

1

據我的理解,必須在給定的視圖控制器上調用-transitionFromViewController:toViewController:duration:才能在兩個子視圖控制器之間轉換。

因此,對於您的情況,您應該在父視圖控制器類中移動該方法調用。

您還應該確保您作爲參數傳遞的視圖控制器已經作爲子視圖控制器添加爲父視圖控制器,否則您將繼續獲得相同的錯誤。

參考:https://developer.apple.com/library/ios/documentation/uikit/reference/UIViewController_Class/Reference/Reference.html

2

錯誤:

Children view controllers must have a common parent view controller

告訴你一切。兩個參與轉換的視圖控制器都必須具有相同的父級。因此,您需要使用addChildViewController:方法將它們都添加到父項。否則它將無法工作。

transitionFromViewController:toViewController:duration方法必須由父視圖控制器調用。不是由孩子。

相關問題