0

ユーザーが選択したオプションに応じて、3 つの異なる画面を表示したい

3 つのオプションがある画面

それらは 1.タイプ処方 2.らくがき処方 3.処方箋フォーム

これら3つのビューを切り替えるにはどうすればよいですか?

ありがとう

4

1 に答える 1

1

SplitViewControllers のような UITabBarControllers は、ルート ビュー コントローラーのみを意図していたため、TabBarController を別のビューにネストすることはできませんが、UITabBar をビューにネストすることはできます。

下部の詳細ビューにタブバーを追加し、上部にナビゲーション バーを追加し、その間にプレースホルダー ビューを追加しました。すべてInterface Builderで!、プレースホルダービューのオートサイズですべてをオンにする必要があります.

次に、UITabBarDelegate を実装します。必要なものは次のとおりです。

- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item {

そこから item.tag を使用できます。Interface Builder で各アイテムに一意のタグを付けると、ユーザーがクリックしたタブがわかります。私は自分のために定義された値を設定しました:

#define VIEW_TAB_A 0
#define VIEW_TAB_B 1
#define VIEW_TAB_C 2

それからあなたはしたいでしょう...

- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item {
[self switchToView:item];

}

- (void) switchToView : (UITabBarItem*) item {

    if( currentViewController != nil ) {
        [currentViewController viewWillDisappear:NO];
        [currentViewController.view removeFromSuperview];               
    }

switch(item.tag) {
    case VIEW_TAB_A:
        currentViewController = self.viewA;
        break;
    case SCAN_VIEW_TAB_B:
        currentViewController = self.viewB;
        break;
    case PROMOTIONS_VIEW_TAB_C:
        currentViewController = self.viewC;
        break;
}

UIView *aView = currentViewController.view; 

aView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
aView.frame = placeholderView.frame;

[currentViewController viewWillAppear:NO];

[self.view insertSubview:aView aboveSubview:placeholderView];
if( currentViewController != nil ) {
    [currentViewController viewDidDisappear:NO];
}
[currentViewController viewDidAppear:NO];

これらは、同様の質問から学んだメモです。次回はもっと検索してください

于 2012-08-06T20:05:47.890 に答える