我可以将两个按钮分配给 Xcode 7 中的同一个动作或插座吗?
Can I assign two buttons to a same action or outlet in Xcode 7?
我在界面生成器的 'w Compact h Any' 选项卡中为 iPhone 创建了一个用户界面。然后我决定在 'w Regular h Regular' 中为应用程序的 iPad 版本创建一个不同的界面,但是当将按钮和标签拖到我的 ViewController.h 文件中的操作和出口时,它们会替换其他界面中的按钮和标签。
有什么办法可以同时保存两者吗?
您可以单击并拖动从 IBAction
方法的小连接器圆直接到 情节提要中的另一个控件,甚至如果它已经连接到一个(实际上我认为你也可以从故事板对象拖动到 IBAction
)。
请记住,如果您使用不同的 classes,您可能希望使用 id
并在使用它之前检查 class 名称:
- (IBAction)buttonPressed:(id)sender {
if ([sender isKindOfClass:[UIButton class]]) {
//
}
}
要验证它是否已连接到两者,请单击方法圈:
如果您在 Xcode 7 或 8 中编写 Swift,则创建的方法将使用 Any
类型;您需要将其更改为 UIButton
才能正常工作:
@IBAction func buttonPressed(sender: UIButton) {
// ^
}
您可以通过为每个按钮指定标签来为两个按钮分配相同的操作,但您不能为两个按钮指定相同的插座。
例如:
假设您有两个按钮,如下所示:
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...
}
}
这适用于编程按钮,但如果您使用情节提要来执行此操作,则适用相同的程序。
我在界面生成器的 'w Compact h Any' 选项卡中为 iPhone 创建了一个用户界面。然后我决定在 'w Regular h Regular' 中为应用程序的 iPad 版本创建一个不同的界面,但是当将按钮和标签拖到我的 ViewController.h 文件中的操作和出口时,它们会替换其他界面中的按钮和标签。
有什么办法可以同时保存两者吗?
您可以单击并拖动从 IBAction
方法的小连接器圆直接到 情节提要中的另一个控件,甚至如果它已经连接到一个(实际上我认为你也可以从故事板对象拖动到 IBAction
)。
请记住,如果您使用不同的 classes,您可能希望使用 id
并在使用它之前检查 class 名称:
- (IBAction)buttonPressed:(id)sender {
if ([sender isKindOfClass:[UIButton class]]) {
//
}
}
要验证它是否已连接到两者,请单击方法圈:
如果您在 Xcode 7 或 8 中编写 Swift,则创建的方法将使用 Any
类型;您需要将其更改为 UIButton
才能正常工作:
@IBAction func buttonPressed(sender: UIButton) {
// ^
}
您可以通过为每个按钮指定标签来为两个按钮分配相同的操作,但您不能为两个按钮指定相同的插座。
例如:
假设您有两个按钮,如下所示:
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...
}
}
这适用于编程按钮,但如果您使用情节提要来执行此操作,则适用相同的程序。