0

3 つの viewController を持つ tabBarController があります。viewController 1 を選択して 90 度にすると、tabBar が非表示になり、現在のビューを tabBarController に追加する必要があります。そうしないと、tabBar があった場所に空白が表示されます。

ここで iPhone を以前の向き (通常の垂直位置) に回転させた場合、ビューを削除しますが、View Controller にはビューが表示されません。元のビュー (addsubview 呼び出しの前のもの) が表示されるはずです。 2 番目の viewController を選択し、後で viewController 1 に戻ると、ビューは完全に表示されます。

なぜこれが起こるのか理解できません、助けてもらえますか?

アップデート:

問題は、タブバーコントローラーにビューを追加することだと思います(self.view addSubview:vista_AS.view])タブバーを非表示にするためにこれが必要で、後でこのビューを削除すると、タブバーコントローラーが何らかの方法でビューコントローラーを失います0 ビュー参照。私が理解していないのは、viewcontroller 1 に変更してから 0 に戻すと、ビューが問題ない理由です。viewcontroller 0ビューをリロードする方法はありますか??

更新 2 : 提案された編集から回答への作成者のコードを含めました

これは私のコードです:

if(toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft || toInterfaceOrientation ==        UIInterfaceOrientationLandscapeRight)
{
   self.tabBar.hidden = TRUE;
   vista_AS = [delegate.tabBarController.viewControllers   objectAtIndex:0]; 
   vista_AS.view.frame = CGRectMake(0, 0, 320, 480);
   [self.view addSubview:vista_AS.view];
 }
 else { 
      if ( (self.interfaceOrientation == UIInterfaceOrientationLandscapeLeft) || (self.interfaceOrientation == UIInterfaceOrientationLandscapeRight) ) 
     {
          [vista_AS.view removeFromSuperview]; 
          self.tabBar.hidden = FALSE; 
     }
4

2 に答える 2

0

vista_ASのサブビューとして追加する場合はtabBarController、の親ビューをvista_AS最新のビューの親に変更するため、。でリンクを解除し tabBarControllerます。

iPhoneの向きを変更するvista_ASと、スーパービューから削除されますが、とビューの間のリンクtabBarControllerはまだ壊れています。だから景色が見えないのだと思います。vista_AS解決策は、おそらくの親をに 再割り当てするtabBarController.viewか、または実行することによって実行されます[tabBarController.view addSubview:vista_AS]

于 2011-02-20T17:52:18.890 に答える
0

View Controller 1 の割り当てが解除されているようです。これは、過剰な解放が原因で、またはメモリが原因でシステムによって行われます。タブバーを覆うビューをどのようにアタッチおよび削除するかを示すコードを投稿してください。これで答えが出るかもしれません。

于 2011-02-18T12:26:09.897 に答える