【问题标题】:How can i make same button in multiple view controller? [duplicate]如何在多个视图控制器中制作相同的按钮? [复制]
【发布时间】:2012-02-05 22:12:54
【问题描述】:

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

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

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

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

btn1 click -> 控制器重载或当前控制器重载;

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

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

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

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

btn1 click -> 控制器打开;

btn2 点击 -> B 控制器重新加载或当前控制器重新加载;

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

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

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

btn1 click -> 控制器打开;

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

btn3 点击 -> C 控制器重新加载或当前控制器重新加载;

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

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

btn1 click -> 控制器打开;

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

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

btn4 点击 -> D 控制器重新加载或当前控制器重新加载;

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

提前致谢。

编辑:

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

如有任何疑问,请随时提出。 再次感谢

编辑 2:

这是我在tabbar 的每个控制器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:

我必须以任何方式解决问题,所以我尝试了很多方法,但我错过了一个简单的问题。当我想更改点击栏时,我也得到了这些按钮,所以我解决了这个问题有点不同的方式..看看我的回答你会得到答案..

还有任何问题请询问。我必须如何解决问题。

提前致谢。

【问题讨论】:

  • 你能告诉我们你到目前为止写的代码吗?
  • 前段时间我有这个需求,特别是因为横向模式下的标签栏(在 ipad 中)在底部没有全长。否则,如果您不制作 ipad 应用程序,那么 UITabBarController 就是您的答案。
  • 我无法理解你的问题。你所说的控制器打开是什么意思,你想同时加载四个动作。然后为该按钮添加四个具有不同选择器的目标。所以你可以使用单个按钮控制不同的视图控制器。
  • 我已经编辑了我的问题,你能再给点建议吗?
  • @AnilKothari 可能现在你应该在编辑后看到我的帖子。

标签: iphone objective-c ios uiviewcontroller uibutton


【解决方案1】:

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

滚动视图中的按钮只是复制了标签栏的功能 - 导致用户体验混乱。

【讨论】:

  • 基本上我所有的控制器(A、B、C、D)都是标签栏控制器,按钮位于这些控制器导航栏的滚动视图中。
  • 为什么不直接删除按钮?他们只是在复制标签栏功能 - 导致用户体验混乱。
  • 你给了我一个很好的解决方案,但我不知道我该怎么做。请您逐步解释一下。如果您现在仍然无法理解我的问题,那么我已经在另一篇文章中发布了我的问题并进行了解释。这是链接...stackoverflow.com/questions/8801429/…
  • 假设滚动按钮指向不同的控制器而不是标签栏项目的视图控制器,那么我将如何做呢?
【解决方案2】:

虽然我建议您使用故事板(iOS 5 的新功能),但您对如此复杂的功能感到困惑,它肯定会以更少的编码帮助您解决问题。

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

【讨论】:

  • 我已经编辑了我的问题,如果没有你目前的建议,你能再给我一些建议吗?
  • 我现在再次编辑了我的代码,请给我解决方案。请注意:请参阅我对代码的评论。
  • 我喜欢 Storyboard,但是当您使用它时,您的部署池仅限于运行 iOS 5.0 或更高版本的设备
  • @ElJay 但我必须以我的方式解决它,我对故事板一无所知,我没有足够的时间使用故事板来完成这个过程。所以现在可以在没有故事板的情况下解决我的问题吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-08
  • 2021-11-20
  • 2019-08-10
相关资源
最近更新 更多