0

Navigation Controller を使用してトップバーを表示する iPhone アプリケーションがあります (タイトルと戻るボタンなど)。

アプリケーション ウィンドウにを追加しましたUITabBar。これにより、その部分を切り替えることができます。ViewController の各ビューにタブ バーを追加する代わりに、アプリ ウィンドウにバーを追加しました。

(私がViewControllerに持っていたとき、コントローラーを切り替えると、アニメーション化されたポップ/プッシュがビュー全体とともに発生したときに、タブバーが左/右にスワイプしました)。

そこで、 を に追加し、UITabBarそれMainWindow.xibをアプリ デリゲートの変数に結び付けました。私のdidFinishLaunchingWithOptions方法では、次のコードを追加しました。

[self.window addSubview:navigationController.view];

CGRect frame = navigationController.view.frame;
frame.size.height -= tabbar.frame.size.height;
navigationController.view.frame = frame;
tabbar.selectedItem = [tabbar.items objectAtIndex:0];

navigationControllerTabBar を表示するために、メイン (の) ビューのサイズを変更します。

デバイスを回転させると問題が発生します。ビューがウィンドウ全体に引き伸ばされ、TabBar を表示できなくなります。

- (void) didRotateFromInterfaceOrientation:(UIInterfaceOrientation) fromInterfaceOrientation次のコードを使用して、ViewController にメソッドを追加しました。

- (void) didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation {
    CGRect frame = self.view.frame;
    frame.size.height -= [AppState shared].tabBar.frame.size.height;
    //frame.origin.y = [AppState shared].tabBar.frame.size.height;
    //frame.origin.x = 100;
    self.view.frame = frame;    
    frame = [AppState shared].tabBar.frame;
    frame.origin.y = [UIScreen mainScreen].bounds.size.height - frame.origin.y - frame.size.height;
    [AppState shared].tabBar.frame = frame;
}

ビューのサイズを変更し、タブ バーをビューの上下の部分に移動します (ここでは、縦向き/縦向きの逆さまの向きのみを許可します)。問題は、TabBar も逆さまになっていて、クリックできなくなっていることです。

以下の画像のようになります。

タブバー上下逆さま

この種の状況を処理する方法を知っている人はいますか?または、タブバーをView Controllerに関連付けずに、インターフェイスの回転をスムーズに処理できるようにする方法は?

4

1 に答える 1

1

意図しない方法でタブバーを使用しています。UITabBarView を他のビューの制御されていない要素として使用しているようです。それは機能ではありません。

UITabBarView は、タブバーに表示されるビューのすべてのビュー コントローラーを制御する UITabBarController によって直接制御する必要があります。つまり、タブバー コントローラーは、サブコントローラーを制御する一種のナビゲーション コントローラーです。

3 つのタブがあり、3 番目のタブがナビゲーション コントローラーであるとします。コントローラーの階層は次のようになります

TabbarController:
    -->tab1ViewController
    -->tab2ViewController
    -->tab3ViewController(UINavigationController):
            -->rootViewController-->secondViewController

コントローラーと適切なコントローラー階層なしで、タブバー ビューを移動および管理しようとしています。それはうまくいきません。

于 2011-03-05T14:54:08.643 に答える