我正在使用“我的菜单”屏幕上有TabBar的应用程序。 它有5个视图控制器(5个选项卡)。我分别在索引3和4分配2个视图控制器,这样如果我点击这两个中的任何一个,它们将导航到他们想要的视图控制器。
如果我第一次在标签栏中选择一个项目,那么每件事都很有效。 但是,当我回到该视图控制器并尝试再次按下它时,该项目被选中进行第一次单击,但不会导航到视图控制器。我必须再次单击它以执行相同的操作。即我必须点击两次导航。
我在这里发布了一些关于我的问题的代码。
//...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时,它运行正常。但当我回来并尝试单击tabBar上的NewScreen项目时,它需要两次点击才能完成事件。任何人都可以帮助我为什么会这样,以及应该采取什么措施来避免这个问题。请帮帮我。 任何帮助表示赞赏。谢谢。
答案 0 :(得分:0)
单击可用于激活当前选项卡&双击去root ...告诉客户端这是默认行为。
如果您仍想覆盖,则必须制作自定义标签栏。