0

私は3つのタブバーアプリケーションを持っており、私のタブはTAB1、TAB2、TAB3です。TAB1ビューコントローラーに次のコードを記述して、ユーザーが押したタブを検出しました

- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item 
{ 
    NSLog(@"tab selected: %@", item.title); 
} 

しかし、このデリゲートは呼び出されません

私は自分のタブを appdelegate.m にセットアップしました

- (void)setupTabBar 
{
    self.myWorkListViewController = [[MyWorkListViewController alloc] initWithNibName:@"MyWorkListViewController"
                                                                               bundle:nil];
    self.askHRViewController = [[AskHRViewController alloc] initWithNibName:@"AskHRViewController"
                                                                     bundle:nil];

    self.moreViewController = [[MoreViewController alloc] initWithNibName:@"MoreViewController"
                                                                           bundle:nil];

    self.bookLeaveViewController = [[BookLeaveViewController alloc] initWithNibName:@"BookLeaveViewController"
                                                                             bundle:nil];
    self.helpViewController = [[HelpViewController alloc] initWithNibName:@"HelpViewController"
                                                                   bundle:nil];

    // Create navigation controllers
    workListNavigationController = [[UINavigationController alloc] initWithRootViewController:self.myWorkListViewController];

    askHRNavigationController = [[UINavigationController alloc] initWithRootViewController:self.askHRViewController];

    bookLeaveViewController = [[UINavigationController alloc] initWithRootViewController:self.bookLeaveViewController];

    moreNavigationController = [[UINavigationController alloc] initWithRootViewController:self.moreViewController];

    helpNavigationController = [[UINavigationController alloc] initWithRootViewController:self.helpViewController];

    [self setTabBarImagesAndText];

    // Setup tab bar controller
    self.tabBarController = [[UITabBarController alloc] init];
    [self.tabBarController setViewControllers:[NSArray arrayWithObjects:workListNavigationController, askHRNavigationController, bookLeaveViewController, helpNavigationController,moreNavigationController, nil]];
    //Set TabBar background
    [self.tabBarController.tabBar insertSubview:[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"TabBar_iOS4_Background"]] atIndex:0];
    [self.tabBarController setSelectedIndex:0];

}
4

2 に答える 2

5

選択したタブバー項目をこのように検出できます:-コードに従って、この行を追加するだけです

// Setup tab bar controller
    self.tabBarController = [[UITabBarController alloc] init];
    self.tabBarController.delegate=self;
    [self.tabBarController setViewControllers:[NSArray arrayWithObjects:workListNavigationController, askHRNavigationController, bookLeaveViewController, helpNavigationController,moreNavigationController, nil]];
    //Set TabBar background
    [self.tabBarController.tabBar insertSubview:[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"TabBar_iOS4_Background"]] atIndex:0];
    [self.tabBarController setSelectedIndex:0];

.hファイルで次のように定義します

@interface yourViewcontroller : UIViewController<UITabBarControllerDelegate>
{
   //declare your Tabbar controller with @proparty 
}

.m ファイルで

 //@synthesize here your Tabbar controller
- (void)viewDidLoad
{
  self.yourTabbarControler.delegate=self;
    [super viewDidLoad];


}

そして今、このUITabbarControllerのデリゲートを置きます

- (void)tabBarController:(UITabBarController *)tabBarController 
 didSelectViewController:(UIViewController *)viewController
{
    NSLog(@"controller class: %@", NSStringFromClass([viewController class]));
    NSLog(@"controller title: %@", viewController.title);

    if (viewController == tabBarController.moreNavigationController)
    {
        tabBarController.moreNavigationController.delegate = self;
    }
}
于 2013-01-16T09:46:57.113 に答える
0

コードを使用して (ViewDidLoad などで)、またはインターフェイス ビルダーで、デリゲートを「接続」する必要があります。
textView デリゲートを接続する方法を説明するこの回答を見てください (ほとんど同じです): https://stackoverflow.com/a/1785366/764575

于 2013-01-16T09:53:28.767 に答える