Почему мне нужно дважды нажать на элемент 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 ответ
Один щелчок используется для активации текущей вкладки и двойной щелчок для перехода в корневой каталог... Скажите клиенту, что это поведение по умолчанию.
Если вы все еще хотите переопределить, вы должны сделать пользовательскую панель вкладок.