1

私はアプリで使用UITabbarControllerしました。tabBarItem の 1 つはcontactsViewController、連絡先のリストを表示するものです。tableRowUITableViewをクリックすると、別のビューが読み込まれます。次に、別のビューをクリックします。もう一度クリックすると、左のビューに移動します。デフォルトの連絡先ビューが表示されません。プログラムで作成しました。クリック時にデフォルトの tabBarView を表示するにはどうすればよいですか?tabBarItemcontactsViewControllerUITabbarControllertabBarItem

tabbarController = [[UITabBarController alloc]init];
self.tabbarController.delegate = self;

tabbarView = [[UIView alloc]initWithFrame:CGRectMake(0, 431, 320, 49)];

            UIImageView *tabImage = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 320, 49)];
            [tabImage setImage:[UIImage imageNamed:@"Taskbar.png"]];
            [tabbarView addSubview:tabImage];

            UIButton *tabItem1 = [[UIButton alloc]initWithFrame:CGRectMake(0, 0, 64, 49)];
            [tabItem1 setImage:[UIImage imageNamed:@"Btn_Home.png"] forState:UIControlStateNormal];
            [tabItem1 setTag:1];
            [tabItem1 addTarget:self action:@selector(tabBarBtnAction:) forControlEvents:UIControlEventTouchUpInside];
            [tabbarView addSubview:tabItem1];

-(IBAction)tabBarBtnAction:(id)sender
{
    UIButton *btn = (UIButton *)sender;
//    NSLog(@"tag %d\n",btn.tag);
    [self resetTabBarBtnImage];
    [self resetAllTabBarBtnImage];
    PreviousBtnTag = btn.tag;
    if ([btn tag]==1) {
        tabbarView.hidden = YES;
        [self.tabbarController setSelectedIndex:0];
        [self.navigationController popToRootViewControllerAnimated:YES];
        [btn setImage:[UIImage imageNamed:@"Btn_Home-Over.png"] forState:UIControlStateNormal];

    }
    else if([btn tag]==2)
    {
        tabbarView.hidden = NO;
        [self.tabbarController setSelectedIndex:1];
        [btn setImage:[UIImage imageNamed:@"Btn_Contacts-Over.png"] forState:UIControlStateNormal];
         [self.navigationController popToRootViewControllerAnimated:YES];

    }
4

2 に答える 2

0

classではappDelegate、最初に as を設定しUItabbarController delegateますself

appDelegateie .m ファイルの実装で

//Assuming the first tab has the contactsviewController

-

(void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController   {
        if (tabBarController.selectedIndex == 0) {
            UINavigationController *requiredNavigationController = [tabBarController.viewControllers objectAtIndex:0];
            [requiredNavigationController popToRootViewControllerAnimated:YES];
        }
    }
于 2013-03-11T06:49:01.807 に答える
0

このようなものをこのように実装する方がはるかに簡単なので、Interface Builder で「タブ バー コントローラー」を作成することをお勧めします。とにかく、プログラムで作成しようとし続けたい場合は、これを変更してみてください:

[self.navigationController popToRootViewControllerAnimated:YES];

このため:

RootViewController *controller = [self.storyboard instantiateViewControllerWithIdentifier:@"Root"];
    [self.navigationController pushViewController:controller animated:YES];

これがうまくいかない場合は、Tab Bar Controller の代わりに Tool Bar Items を使用してみませんか? ツールバーの項目はボタンのように扱われるため、イベントを簡単に管理できます。

幸運を!

于 2013-03-11T15:16:49.587 に答える