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;
}