Почему мне нужно дважды нажать на элемент tabBarViewController, чтобы перейти на другой View Controller - iOS

Я работаю над приложением, в котором на экране моего меню присутствует TabBar. Имеет 5 контроллеров просмотра (5 вкладок). Я назначаю 2 контроллера вида с индексами 3 и 4 соответственно, так что, если я нажму на любой из двух, они перейдут к нужным контроллерам представления.

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

Здесь я разместил код относительно моего вопроса.

//...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];

И, на мой взгляд, класс контроллера, у меня ниже код

-(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 в первый раз, он работает нормально. Но когда я возвращаюсь и пытаюсь щелкнуть элемент NewScreen на tabBar, мне требуется два щелчка, чтобы два события закончились. Кто-нибудь может мне помочь, почему это происходит, и что нужно сделать, чтобы избежать этой проблемы. Пожалуйста, помогите мне. Любая помощь приветствуется. Спасибо.

1 ответ

Решение

Один щелчок используется для активации текущей вкладки и двойной щелчок для перехода в корневой каталог... Скажите клиенту, что это поведение по умолчанию.

Если вы все еще хотите переопределить, вы должны сделать пользовательскую панель вкладок.

Другие вопросы по тегам