0

Я нажимаю новый StatusViewController (я создал UITabbarViewController в нем программно) от rootviewController (контроллер UInavigation). Теперь, я хочу нажать кнопку выхода из системы, он нажимает rootviewcontroller, но я использовал ниже код, он толкает rootviewcontroller в порядке, но он все еще имеет вкладку внизу.Как переместить rootviewcontroller в Ios

Этот код для вызова RootViewController:

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

И этот код создается UITabBarController в StatusViewController:

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

Вы не хотите нажимать на root, вы хотите POP для root – Stavash

ответ

3

Используйте popToRootViewControllerAnimated метод вместо pushViewController:

[self.navigationController popToRootViewControllerAnimated:animated]; 
+0

Я попробовал, но это не сработало. спасибо – user2656381

+0

Это правильное решение. Можете ли вы опубликовать код, в котором вы его попробовали? – danh

+0

@danh: Я отправил свой код в свой вопрос. спасибо – user2656381

0

Ваша иерархия не кажется правильной. Контроллер панели должен быть контроллером корневого представления. Для каждой вкладки вы можете иметь контроллер навигации, у которого есть свои собственные контроллеры для нажатия и выталкивания. Тем не менее, ваша панель вкладок всегда будет видна, так как это поведение, которое ожидается, когда у вас есть приложение на основе панели вкладок. Если вы хотите представить представление, не отображающее панель вкладок, вам нужно будет представить этот контроллер представлений в качестве контроллера вида Modal поверх вашего контроллера панели вкладок.

+0

Я обновил свой код. Не могли бы вы мне помочь? Я использовал UINavigation для каждого элемента панели. Я нажимаю StatusVIewController (включая контроллер панели) из rootviewcontroller. Теперь я хочу вернуть rootviewcontroller. Я не знаю, как это сделать? – user2656381

+0

Не показывать вкладку в виде модального вида. Ваш контроллер панели вкладок должен быть вашим контроллером корневого представления, что прекрасно. Ваши навигационные контроллеры также прекрасны. Я не знаю, где вы хотите выйти из системы. Когда вы нажмете logout, представите LoginViewController в качестве модального контроллера. Не вставляйте loginViewController в любой контроллер навигации. –

Смежные вопросы