我在界面构建器的'w Compact h Any'选项卡中为iPhone创建了一个用户界面。然后我决定在'w Regular h Regular'中为应用程序的iPad版本创建一个不同的界面,但是当将按钮和标签拖到我的ViewController.h文件中的操作和出口时,它们会替换按钮和标签。另一个界面。
有什么方法可以同时保存两者吗?
答案 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...
}
}
这是以编程方式按钮,但如果你使用故事板进行,那么相同的程序就是这样。