0

私は3つのViewController、フローを持っています:rootviewcontrollerはview1で、view1の「開始」ボタンをクリックするとview2がプッシュされ、view2の「ステータス」ボタンをクリックするとview3がプッシュされます。view3 には uitabbarcontroller があり、内部 tabbarcontroller には 2 つの UINavigationController があります。私の問題は次のとおりです。tabbarcontrollerのUINavigationControllerの「ログアウト」ボタンをクリックすると、view2がコールバックされます。しかし、view2が表示されたら、「ステータス」ボタンをクリックすると、view3をプッシュできません。作成された UItabbarcontroller のコード

self.tab=[[UITabBarController alloc]init];
CGRect screenBounds = [[UIScreen mainScreen] bounds];
if (screenBounds.size.height == 568)
{
    // code for 4-inch screen
    //  LoginButton.frame = CGRectMake(0, 518, 80, 49);
    self.tab.view.frame = CGRectMake(0,0,320,568);
}
else if (screenBounds.size.height == 1024)
{
    //code for ipad

}
else  if (screenBounds.size.height == 480)
{
    // code for 3.5-inch screen
    //  LoginButton.frame = CGRectMake(0, 430, 80, 49);
    self.tab.view.frame = CGRectMake(0,0,320,480);
}

// FirstViewController
UploadTab *uploadview=[[UploadTab alloc]initWithNibName:nil bundle:nil];
UINavigationController *uploadTabItem = [[[UINavigationController alloc] initWithRootViewController: uploadview] autorelease];
uploadview.title=@"Uploading";
uploadview.tabBarItem.image=[UIImage imageNamed:@"Uploading.png"];
self.title = @"FirstViewControllerTitle";

//SecondViewController
ConvertTab *convertView=[[ConvertTab alloc]initWithNibName:nil bundle:nil];
UINavigationController *convertTabItem = [[[UINavigationController alloc] initWithRootViewController: convertView] autorelease];
convertView.title=@"Convert";
convertView.tabBarItem.image=[UIImage imageNamed:@"Convert.png"];

//ThirdViewController
CompletedTab *completedView=[[CompletedTab alloc]initWithNibName:nil bundle:nil];
UINavigationController *completedTabItem = [[[UINavigationController alloc] initWithRootViewController: completedView] autorelease];
completedView.title=@"Completed";
completedView.tabBarItem.image=[UIImage imageNamed:@"Completed.png"];
UIBarButtonItem * LogoutItem= [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"Logout.png"] style:UIBarButtonItemStylePlain target:self action:@selector(logout)];

self.navigationItem.rightBarButtonItem = LogoutItem;
self.tab.viewControllers=[NSArray arrayWithObjects:uploadTabItem,convertTabItem, completedTabItem, nil];

[self.view insertSubview:self.tab.view belowSubview: uploadview.view];
[self presentModalViewController:self.tab animated:NO];

以下のコードを使用して、view2 をコールバックします。

    - (void) handleBack:(id)sender
{
    ChooseViewController *chooseview = [[ChooseViewController alloc] init];
    [self.navigationController pushViewController:chooseview animated:NO];
    [chooseview release];

}

使用し[self.navigationController presentModalViewController:loginView animated:YES]; ました。view2がview3をプッシュできないようにしたと思います。何か提案はありますか ?どうもありがとう

4

1 に答える 1

0

これが役立つことを願っています:

NSArray *viewControllers = [[self navigationController] viewControllers];  
    for (int i = 0; i < [viewContrlls count]; i++){  
        id obj = [viewControllers objectAtIndex:i];  
        if ([obj isKindOfClass:[yourViewControllername class]]){  
            [[self navigationController] popToViewController:obj animated:YES];  
            return;
        }
    }    

これを使用すると、特定のビューに戻ることができます。

于 2013-08-09T18:33:40.427 に答える