2012-04-17 64 views
3

在我的應用程序中,我試圖在使用自定義動畫的同時切換每個都是自己的XIB的視圖。我做了一個基本視圖控制器作爲父視圖來保存所有的代碼,但我似乎無法得到這個工作。兒童視圖控制器必須有一個共同的父視圖控制器?

我爲我的應用程序和界面生成器中的所有視圖控制器製作了IBOutlet,我將插座連接到適當的控制器。每個控制器都加載正確的XIB,所以沒有問題。問題在於以下更改視圖代碼。

這是我的代碼:

-(void)changeViews { 
    CGRect frame = self.view.frame; 
    frame.origin.x = CGRectGetMaxX(frame); 
    theView4.view.frame = frame; 

    [self.view addSubview:theView4.view]; 
    [self addChildViewController:theView4]; 

    [self transitionFromViewController:theView1 
         toViewController:theView4 
           duration:1 
           options:UIViewAnimationOptionTransitionNone 
          animations: ^{ 
           CGRect frame = self.view.frame; 
           theView4.view.frame = frame; 
           frame.origin.x -= frame.size.width; 
           self.view.frame = frame; 
          } 
          completion:completion:nil]; 

這是控制檯崩潰:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Children view controllers <MyGameViewController: 0x1dd25210> and <Settings: 0x1dd249d0> must have a common parent view controller when calling -[UIViewController transitionFromViewController:toViewController:duration:options:animations:completion:]' 

有誰知道如何解決這一問題?

謝謝!

+0

「設置」類究竟是什麼?它是如何定義的? – Stavash 2012-04-17 11:49:41

+0

settings類是一個UIViewController,在頭文件中聲明,settered和gettered,並連接到Interface Builder中的View Controller插座,該插座通過其屬性連接到Settings nib和Class。 – 2012-04-18 21:16:01

回答

4

您可以使用此:

當您使用addChildViewController:孩子視圖 控制器添加到周圍的一個。您還必須通過didMoveToViewController:通知孩子 控制器它已被放入 另一個控制器。您還可以使用 transitionFromViewController:toViewController:來爲另一個視圖交換一個視圖控制器,可選地給出一個動畫。

這是從here(我建議你完全閱讀接受的答案)。長話短說,你還需要告知它確實進入了那個父視圖控制器。

相關問題