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

时间:2012-01-09 10:59:48

标签: iphone objective-c ios uiviewcontroller uibutton

  

可能重复:
  Is there anyway to add same scroll menubar at the navigation bar?

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

我有四个视图控制器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的图像,直到现在我已经完成了此....

enter image description here

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

编辑2:

这是我在viewDidload个项目的每个控制器tabbar中导入的按钮的滚动视图。

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:

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

进一步的问题请问。任何我必须解决的问题。

提前致谢。

2 个答案:

答案 0 :(得分:2)

您是否考虑使用UITabBarController来实现您所描述的功能。

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

答案 1 :(得分:0)

虽然我建议你使用故事板(新的ios 5功能),但是你会对这些复杂的功能感到困惑,它肯定会帮助你减少编码时的问题。

您必须将插座连接到视图控制器上的其他三个视图,再从其他三个视图连接到此视图。您可以在此处找到更多详细信息。Link