在代码中将 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