在代码中将 UIButton 连接到 IBOutlet 和 IBAction

Posted

技术标签:

【中文标题】在代码中将 UIButton 连接到 IBOutlet 和 IBAction【英文标题】:Connecting a UIButton to an IBOutlet and IBAction in code 【发布时间】:2013-08-26 08:03:00 【问题描述】:

我有这是 viewDidLoad:

// Set up register button
UIButton *registerButton = [UIButton buttonWithType:UIButtonTypeSystem];
[registerButton setTitle:@"Register" forState:UIControlStateNormal];
registerButton.frame = CGRectMake(0.0, 0.0, self.screenWidth / 2.0, 100.0);

还有这个:

- (IBAction)buttonPressed:(UIButton *)sender


我的 .h 文件中也有这个:

@property (nonatomic, weak) IBOutlet UIButton *registerButton;

如何将 IBOutlets 和 IBActions 连接到我在代码中创建的按钮?

【问题讨论】:

【参考方案1】:

你必须像这样为按钮设置一个目标:

[registerButton addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside];

【讨论】:

所以我们不需要 IBOutlet? 不,因为您不使用 Interface Builder - 还是我理解错了? @chris:你没有使用 xib 或 storyboard 吗? 并非总是如此。您可以创建 xib 并添加(和创建)每个代码的所有 UI 元素。 (不要忘记将它们添加到视图中)。 我都是通过代码来完成的,这样我可以更好地使用 api(如果我愿意的话,我会使用故事板)【参考方案2】:
UIButton *registerButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
            registerButton.frame=CGRectMake(150, 10, 150,25);
            registerButton.userInteractionEnabled = YES;

            [registerButton setTitle:@"Register" forState:UIControlStateNormal];

            [registerButton addTarget:self action:@selector(buttonPressed:) 
               forControlEvents:UIControlEventTouchUpInside];
            [view.contentView addSubview:registerButton];

试试这个。我认为这对你有用。

【讨论】:

以上是关于在代码中将 UIButton 连接到 IBOutlet 和 IBAction的主要内容,如果未能解决你的问题,请参考以下文章

ios - 将一个 UIButton 连接到 2 个 segues

在代码中将 UITableViewCell 内容连接到插座

如何取消连接到 UIButton 的 segue

在 Pyspark 中将 Sqoop 连接到 Hadoop

IBOutlet 用于约束并以编程方式将其连接到 UIButton

在 NodeJS 中将 WebSocket 连接到 WebSocketServer