0

rootviewController (UInavigation 컨트롤러)에서 새로운 StatusViewController (프로그래밍 방식으로 만든 UITabbarViewController)를 푸시합니다. 자, 로그 아웃 버튼을 클릭하고 싶습니다. rootviewcontroller를 밀었지만 코드 아래에서 사용했습니다. rootviewcontroller는 괜찮지 만 하단에는 여전히 tabbar가 있습니다.Ios에서 rootviewcontroller를 푸시하는 방법

이 코드는 rootviewcontroller 호출 :

LoginTab *loginView = [[LoginTab alloc] init]; 
    [self.navigationController pushViewController:loginView animated:YES]; 
    [loginView release]; 

그리고이 코드는 StatusViewController에서 UITabBarController가 만들어집니다 :

self.tab=[[UITabBarController alloc]init]; 

UploadTab *uploadview=[[UploadTab alloc]initWithNibName:nil bundle:nil]; 
UINavigationController *uploadTabItem = [[[UINavigationController alloc] initWithRootViewController: uploadview] autorelease]; 
[email protected]"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]; 
[email protected]"Convert"; 
convertView.tabBarItem.image=[UIImage imageNamed:@"Convert.png"]; 

//ThirdViewController 
CompletedTab *completedView=[[CompletedTab alloc]initWithNibName:nil bundle:nil]; 
UINavigationController *completedTabItem = [[[UINavigationController alloc] initWithRootViewController: completedView] autorelease]; 
[email protected]"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]; 

당신은이 이미지를 볼 수 있습니다 enter image description here

+0

루트로 푸시하지 않으려면 루트로 POP를 바꿔야합니다. – Stavash

답변

3

사용 popToRootViewControllerAnimated 방법 대신 pushViewController :

[self.navigationController popToRootViewControllerAnimated:animated]; 
+0

시도했지만 작동하지 않았습니다. 감사합니다 – user2656381

+0

그것은 올바른 해결책입니다. 당신이 그것을 시도한 코드를 게시 할 수 있습니까? – danh

+0

@ danh : 내 질문에 내 코드를 게시했습니다. 감사합니다 – user2656381

0

계층 구조가 올바르지 않습니다. 탭 막대 컨트롤러는 루트보기 컨트롤러 여야합니다. 각 탭마다 푸시/팝 할 자체 컨트롤러가있는 탐색 컨트롤러를 사용할 수 있습니다. 즉, 탭 막대를 기반으로하는 응용 프로그램이있을 때 예상되는 동작이므로 탭 막대가 항상 표시됩니다. 탭 표시 줄을 표시하지 않는보기를 표시하려면보기 컨트롤러를 탭 표시 줄 컨트롤러 위에 모달보기 컨트롤러로 제시해야합니다.

+0

문제의 코드가 업데이트되었습니다. 저를 도와주세요? 각 tabbar 항목에 대해 UINavigation을 사용했습니다. 나는 rootviewcontroller에서 StatusVIewController (tabbar 컨트롤러 포함)를 push한다. 자, 나는 rootviewcontroller를 되돌리고 싶다. 나는 어떻게 할 수 있는지 모른다. – user2656381

+0

탭을 모달 뷰로 표시하지 마십시오. 귀하의 탭 막대 컨트롤러는 귀하의 루트보기 컨트롤러가 잘되어야합니다. 네비게이션 컨트롤러도 괜찮습니다. 로그 아웃 버튼을 원하는 위치가 명확하지 않습니다. 로그 아웃을 클릭하면 LoginViewController를 모달 뷰 컨트롤러로 표시합니다. loginViewController를 모든 탐색 컨트롤러로 밀어 넣지 마십시오. –

관련 문제