在UITabBarController

时间:2015-12-15 22:25:52

标签: ios objective-c uinavigationcontroller uitabbarcontroller

UITabBarControllerrootViewController加载为UINavigationController。我有6个TabsFifthViewControllerSixthViewController位于More标签下,他们会推送DetailsViewController来显示详细信息。我无法在DetailsViewController中显示返回按钮以返回ParentViewController。我尝试了以下所有选项,但是,它们都没有工作。

我从UITabBarController加载Storyboard作为初始视图控制器,并从FifthViewController加载SixthViewControllerStoryboard。在FifthViewController我正在设置标题

-(void)viewWillAppear:(BOOL)animated
{
    self.title = @"Alerts" ;
    self.tabBarController.title = @"Alerts" ;
}

DetailsViewController我正在设置标题

-(void)viewWillAppear:(BOOL)animated
{
    //I tired all the below options to show back button
}

self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:nil action:nil] ;

self.navigationController.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:nil action:nil] ;

self.tabBarController.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:nil action:nil] ;

self.tabBarController.navigationController.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:nil action:nil] ;

我在哪里做错了?

2 个答案:

答案 0 :(得分:1)

根据您的说明,您的设置不正确。

UITabBarController应该是应用的rootViewController。每个标签应为UINavigationController。应为每个选项卡设置适当的根视图控制器。

标签栏控制器本身不应位于导航控制器中。

您不应该设置任何导航项的backBarButtonItem

通过我描述的设置,每个选项卡都有自己独特的导航。例如,用户可以在选项卡2上,然后前进到该选项卡中的下一个视图控制器。标签仍然可见。现在,用户可以转到任何选项卡,稍后返回选项卡2,仍然位于该选项卡的第二个视图控制器上。

答案 1 :(得分:1)

如果您希望它在带有导航堆栈和后退按钮的选项卡中运行,则需要return new int[]{-1, -1};作为UINavigationController

enter image description here