0

私は Iphone を初めて使用し、特定のページにのみロードする必要があるカスタム タブ バーを追加したアプリケーションを開始しました。タブバーは私の期待どおりに機能します。問題は、他のページに移動するとタブバーが表示され続け、深刻な問題が発生することです...これが私の実装です

.h:

#import <UIKit/UIKit.h>
@class MainMenuViewController;

@interface RoutineListViewController : UIViewController<UITabBarDelegate>{
    MainMenuViewController *homeBtn;

    UITabBar *mainTabBar;
    UIViewController *routineTabViewController;
    UIViewController *calendarTaViewController;
    UIViewController *editTabViewController;
}

@property (nonatomic, retain) IBOutlet UITabBar *mainTabBar;
@property (nonatomic, retain) IBOutlet UIViewController *routineTabViewController;
@property (nonatomic, retain) IBOutlet UIViewController *calendarTabViewController;
@property (nonatomic, retain) IBOutlet UIViewController *editTabViewController;

- (IBAction)goToHome:(id)sender;

@end

.m では、タブを次のように実装しています。

- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item {
    switch (item.tag) {
        case 1:
            if (routineTabViewController == nil) {
                self.routineTabViewController =[[RoutineListViewController alloc] initWithNibName:@"RoutineListViewController" bundle:nil];
                [self.view insertSubview:routineTabViewController.view belowSubview:mainTabBar];
                routineTabViewController = nil;
                [routineTabViewController release];
            }

            break;
        case 2:
            if (calendarTabViewController == nil) {
                self.calendarTabViewController =[[CalendarTabViewController alloc] initWithNibName:@"CalendarTabViewController" bundle:nil];
                [self.view insertSubview:calendarTabViewController.view belowSubview:mainTabBar];
                calendarTabViewController = nil;
                [calendarTabViewController release];
            }

            break;
        case 3:
            if (editTabViewController == nil) {
                self.editTabViewController =[[EditTabViewController alloc] initWithNibName:@"EditTabViewController" bundle:nil];
                [self.view insertSubview:editTabViewController.view belowSubview:mainTabBar];
                editTabViewController = nil;
                [editTabViewController release];
            }

            break;
        default:
            break;
    }
}

また、他のページに移動するボタンを実装すると、タブバーが表示され続けます。EditTabViewController.m ファイルのボタンの実装を次に示します。

- (IBAction)goToHome:(id)sender {
    homeBtn = [[MainMenuViewController alloc] initWithNibName:@"MainMenuViewController" bundle:nil];
    [self.view addSubview:homeBtn.view];
}
4

1 に答える 1

1

Apple の規則では、TabBarController がメイン コンテナーであると想定されています。さらに、カスタムを実装するだけの場合、それUITabBarを使用してユーザーを他のビューにプッシュしていますか? もしそうなら、UITabBarが消えたら、ユーザーはどのように戻ってきますか?

特定のページが表示されているときにのみバーを表示したい場合は、UINavigationController(メイン コンテナーとして) を実装し、同じ機能を実行UIViewControllerする をルートに実装してはどうでしょうか。UIToolbar次に、別のページに移動すると (ここでは、 内の別のページUIPageControlや 内の Web ページではなく、新しい画面を意味すると想定しています)、.を含まないUIWebViewnew をプッシュします。UIViewControllerUIToolbar

このような種類:

--UINavigationController
   |
   -->UIViewController as RootViewController --> Contains UIToolbar
      |
      -->Pushes UIViewController --> Has no UIToolbar

編集・更新

あなたのコードを見たばかりですが、あなたが何を達成しようとしているのか理解できません。UINavigationController実際に使用せずに、何らかの形で a に似た動作を実装しようとしている可能性があると思います。


編集/更新#2 次のように実装できる動作が必要だと思います:

UINavigationController (containing IconMenuViewController as RootViewController)
|
--> PageViewController (push into this from any icon touch in IconMenuViewController)
       --> Contains UIToolbar/UITabBar

上記の階層を使用すると、画面の上部にUINavigationControllerが自動的NavigationBarに表示され、戻るボタンが表示されます。UIToolbarまたはUITabBarの一部を作成している限りPageViewController、ビュー コントローラを押したりポップしたりすると、表示されたり消えたりするはずです。それは理にかなっていますか?

于 2012-05-04T12:02:06.900 に答える