我可以在Xcode 7中为同一个动作或插座分配两个按钮吗?

时间:2015-07-23 16:45:57

标签: ios objective-c xcode interface-builder

我在界面构建器的'w Compact h Any'选项卡中为iPhone创建了一个用户界面。然后我决定在'w Regular h Regular'中为应用程序的iPad版本创建一个不同的界面,但是当将按钮和标签拖到我的ViewController.h文件中的操作和出口时,它们会替换按钮和标签。另一个界面。

有什么方法可以同时保存两者吗?

2 个答案:

答案 0 :(得分:3)

您可以点击IBAction方法的小连接器圈直接拖到故事板中的另一个控件,即使它已经连接到一个(实际上我认为你可以从故事板对象拖到IBAction

请记住,如果你使用不同的类,你可能想要使用id并检查类名,然后才能使用它:

- (IBAction)buttonPressed:(id)sender {
    if ([sender isKindOfClass:[UIButton class]]) {
        //
    }
}

要验证它是否已连接到两者,请单击方法圈:

如果您在Xcode 7或8中编写Swift,则创建的方法将使用Any类型;您需要将其更改为UIButton才能实现此目的:

@IBAction func buttonPressed(sender: UIButton) {
    //                                  ^
}

答案 1 :(得分:0)

您可以通过为每个按钮添加标签为两个按钮指定相同的操作,但是您无法为两个按钮指定相同的插座。

例如:

假设您有两个按钮,如下所示:

  UIButton *btn1 = [[UIButton alloc]initWithFrame:(YourFrame)];
    btn1.tag=1;
   [btn1 addTarget:self action:@selector(buttonTapped:) forControlEvents:UIControlEventTouchUpInside];
   [self.view addSubview:btn1];

  UIButton *btn2 = [[UIButton alloc]initWithFrame:(YourFrame)]; 
   btn2.tag=2;
  [btn2 addTarget:self action:@selector(buttonTapped:) forControlEvents:UIControlEventTouchUpInside];
  [self.view addSubview:btn2];

然后

- (IBAction)buttonTapped:(UIButton *)sender
{
    if ((sender.tag=1))
    {
      // btn1 clicked, do something for btn1 click action here...
    }
    else if ((sender.tag=2))
    {
      //btn2 clicked, do something for btn2 clik action here...
    }
}

这是以编程方式按钮,但如果你使用故事板进行,那么相同的程序就是这样。