编程创建IBOutlets和IBActions

10
我想在代码中创建IBOutlet和IBAction,而不是使用界面构建器。
假设我在我的UI上有一个名为btnDisplay的按钮,以及一个名为displayMessage的代码方法。那么,我需要编写什么代码,才能使得当btnDisplay被点击时,displayMessage方法运行?

这里有一个很好的解释,说明如何通过编程方式创建插座。 - NaXir
这是你所说的吗?https://dev59.com/FXE95IYBdhLWcg3wSsGD 具体来说,是addTarget...这部分。 - Mick MacCallum
2个回答

10

如果没有插座的话,可以在IB中为按钮添加标签,比如128。然后:

UIButton *btnDisplay = (UIButton *)[self.view viewWithTag:128];
[btnDisplay  addTarget:self action:@selector(pressedBtnDisplay:) forControlEvents:UIControlEventTouchUpInside];

然后实施:

- (void) pressedBtnDisplay:(id)sender {
}

0

如果您使用IBOutlet,那么您可以使用代码添加按钮。

UIButton *btnDisplay = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 50, 50)];
[btnDisplay setTitle:@"display" forState:UIControlStateNormal];
[btnDisplay addTarget:self action:@selector(DisplayMessage:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:btnDisplay];

如果您使用IBOutlet,则必须在viewDidLoad或其他适合您需求的位置添加以下代码。
[btnDisplay addTarget:self action:@selector(DisplayMessage:) forControlEvents:UIControlEventTouchUpInside];

并实现这个方法。

-(void)DisplayMessage:(id)sender
{
    //do what you want
}

也许这会帮到你。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接