为什么我需要点击 tabBarViewController 项目两次以导航到不同的视图控制器 - iOS

Why i need to tap tabBarViewController item Twice to navigate to different View Controller - iOS

我正在开发一个在我的菜单屏幕上有一个 TabBar 的应用程序。 它有 5 个视图控制器(5 个选项卡)。我分别在索引 3 和 4 处分配了 2 个视图控制器,这样如果我单击两者中的任何一个,它们将导航到所需的视图控制器。

如果我 select 第一次在标签栏中添加一个项目,一切都会正常进行。 但是,当我回到那个视图控制器并尝试再次按下它时,该项目会在第一次单击时得到 selected,但不会导航到视图 controller.I 必须再次单击它才能执行同样的动作。即我必须点击它两次才能导航。

我在这里发布了一些关于我的问题的代码。

//...In my appdelegate class
CalenderScreen *calender=[[CalenderScreen alloc]initWithNibName:@"CalenderScreen" bundle:nil];
    NewsScreen *news=[[NewsScreen alloc]initWithNibName:@"NewsScreen" bundle:nil ];

    UINavigationController *nav1=[[UINavigationController alloc]initWithRootViewController:menu];
    UINavigationController *nav2=[[UINavigationController alloc]initWithRootViewController:emergency];
    UINavigationController *nav4=[[UINavigationController alloc] initWithRootViewController:help];
    UINavigationController *nav3=[[UINavigationController alloc]initWithRootViewController:calender];
    UINavigationController *nav5 =[[UINavigationController alloc]initWithRootViewController:news];

//tab bar initialization
tab=[[UITabBarController alloc]init];
    tab.viewControllers=[[NSArray alloc]initWithObjects:nav1,nav2,nav4,nav5,nav3 ,nil];
    UITabBarItem *tabItem = [[[tab tabBar] items] objectAtIndex:0];
    [tabItem setTitle:@"Menu"];
    tabItem.image=[UIImage imageNamed:@"Menu.png"];
    UITabBarItem *tabItem1 = [[[tab tabBar] items] objectAtIndex:1];
    [tabItem1 setTitle:@"Emergency"];
    tabItem1.image=[UIImage imageNamed:@"Emergency.png"];
    UITabBarItem *tabItem2 = [[[tab tabBar] items] objectAtIndex:2];
    [tabItem2 setTitle:@"HelpLine"];
    tabItem2.image=[UIImage imageNamed:@"helpline.png"];
    UITabBarItem *tabItem3 = [[[tab tabBar] items] objectAtIndex:3];
    [tabItem3 setTitle:@"News"];
    tabItem3.image=[UIImage imageNamed:@"News.png"];
    UITabBarItem *tabItem4 = [[[tab tabBar] items] objectAtIndex:4];
    [tabItem4 setTitle:@"Raise Ticket"];
    tabItem4.image=[UIImage imageNamed:@"ticket.png"];

     self.window.rootViewController=tab;

    [self.window makeKeyAndVisible];

在我的视图控制器中 class,我有以下代码

-(void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController {
NewsScreen *news=[[NewsScreen alloc] initWithNibName:@"NewsScreen" bundle:nil];

if (tabBarController.selectedIndex==3)
{
    NSUInteger index=3; //assign value here
    UINavigationController *nv = [[tabBarController viewControllers] objectAtIndex:index];//index of your NewsScreen controller
    [tabBarController setSelectedIndex:3];

    NSArray *array =[nv viewControllers];
    for (news in array)
    {
        if ([news isKindOfClass:[NewsScreen class]])
        {
            news.loginbacklbl.hidden=YES;
        }
    }
}

我担心的是,当我第一次点击 NewsScreen 时,它工作正常。但是当我回来并尝试单击 tabBar 上的 NewScreen 项目时,它需要我单击两次才能完成事件。任何人都可以帮助我为什么会发生这种情况,以及应该如何避免这个问题。请帮帮我。 任何帮助表示赞赏。谢谢。

单击用于激活当前选项卡,双击进入根目录...告诉客户这是默认行为。

如果您仍然想覆盖,则必须制作自定义标签栏。