如何在多视图控制器中制作相同的按钮?

可能重复:
无论如何在导航栏上添加相同的滚动菜单栏?

可能是一个愚蠢的问题,但我必须不惜一切代价解决它,因为我的整个项目取决于它。我的问题是,

我有四个视图控制器A,B,C,D。

A有4个按钮btn1,btn2,btn3,brn4 。 当我开始点击btn然后

btn1单击 – >控制器重载或当前控制器重载;

btn2点击 – > B控制器打开;

btn3点击 – > C控制器打开;

btn4点击 – > D控制器打开;

B有4个按钮btn1,btn2,btn3,brn4 。 当我开始点击btn然后

btn1单击 – >控制器打开;

btn2单击 – > B控制器重载或当前控制器重载;

btn3点击 – > C控制器打开;

btn4点击 – > D控制器打开;

C有4个按钮btn1,btn2,btn3,brn4 。 当我开始点击btn然后

btn1单击 – >控制器打开;

btn2点击 – > B控制器打开;

btn3单击 – > C控制器重载或当前控制器重载;

btn4点击 – > D控制器打开;

D有4个按钮btn1,btn2,btn3,brn4 。 当我开始点击btn然后

btn1单击 – >控制器打开;

btn2点击 – > B控制器打开;

btn3点击 – > C控制器打开;

btn4单击 – > D控制器重载或当前控制器重载;

我需要详细的流程我该怎么做?

提前致谢。

编辑:

我所有这些控制器(A,B,C,D)都在tabbar控制器中,按钮位于控制器顶部的滚动视图中。我附加了这些UI的图像,直到现在我已经完成了这个… ..

在此处输入图像描述

进一步的任何疑问请不要犹豫。 再次感谢

编辑2:

这是我在每个控制器viewDidloadtabbar项目中导入的按钮的viewDidload

 scrollButtonView = [[scrollViewButtons alloc] initWithNibName:@"scrollViewButtons" bundle:nil]; CGRect frame = CGRectMake(0, 20, 320, 43); scrollButtonView.view.frame = frame; scrollButtonView.view.userInteractionEnabled =YES; [self.navigationController.view addSubview:scrollButtonView.view]; 

这里是我想在按钮点击时切换控制器的代码。但问题是当我导入那些A,B,C,D然后我发现错误Unknown controller

  -(void)mybuttons:(id)sender{ NSLog(@"mybuttons called"); UIButton *button=(UIButton *)sender; if (button.tag == 0) { NSLog(@"hey have clicked first button, this is my tag : %i \n\n",button.tag); [button setBackgroundImage:[UIImage imageNamed:@"btn_topmenu_hover.png"] forState:UIControlStateSelected]; //sets the background Image] } else { [button setBackgroundImage:[UIImage imageNamed:@"btn_topmenu_normal.png"] forState:UIControlStateNormal]; //sets the background Image] } if (button.tag == 1) { NSLog(@"hey have clicked second button, this is my tag : %i \n\n",button.tag); [button setBackgroundImage:[UIImage imageNamed:@"btn_topmenu_hover.png"] forState:UIControlStateNormal]; //sets the background Image] self.tabBarController.selectedIndex = 1; } else if (button.tag == 2) { NSLog(@"hey have clicked first button, this is my tag : %i \n\n",button.tag); [button setBackgroundImage:[UIImage imageNamed:@"btn_topmenu_hover.png"] forState:UIControlStateNormal]; //sets the background Image] //UIViewController *newController = [[UIViewController alloc] initWithNibName:@"CustomerViewController" bundle:nil]; //UINavigationController *myCustomerController = [[[UINavigationController alloc] initWithRootViewController:newController] autorelease]; //UINavigationController *myCustomerController = [[UINavigationController alloc] initWithNibName:@"CustomerViewController" bundle:nil]; UIViewController *secondViewController = [[UIViewController alloc] initWithNibName:@"CustomerViewController" bundle:nil]; [self.navigationController pushViewController:secondViewController animated:YES]; self.tabBarController.selectedIndex = 2; } else if (button.tag == 3) { NSLog(@"hey have clicked second button, this is my tag : %i \n\n",button.tag); [button setBackgroundImage:[UIImage imageNamed:@"btn_topmenu_hover.png"] forState:UIControlStateNormal]; //sets the background Image] //[self.navigationController pushViewController:cstViewController animated:YES]; self.tabBarController.selectedIndex = 3; } } 

EDIT3:

任何方式我必须解决问题,所以我尝试了很多方式,但我错过了一个简单的问题。 当我想改变水龙头然后我也得到这些按钮所以我已经解决了这个问题有点不同的方式..看到我的回答你会得到答案..

请问任何问题。 任何我如何解决问题。

提前致谢。

您是否考虑过使用UITabBarController – 它实现了您描述的function。

滚动视图中的按钮只复制标签栏function – 导致令人困惑的用户体验。

虽然我想建议你使用故事板(新的ios 5function),但它确实可以帮助你解决问题,减少编码。

您必须将sockets连接到视图控制器上的其他三个视图,再从其他三个视图连接到此视图。 你可以在这里找到更多细节。 链接