【问题标题】:Connecting a UIButton to an IBOutlet and IBAction in code在代码中将 UIButton 连接到 IBOutlet 和 IBAction
【发布时间】: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 连接到我在代码中创建的按钮?

【问题讨论】:

    标签: ios uibutton ibaction iboutlet


    【解决方案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];
    

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

    【讨论】:

      猜你喜欢
      • 2013-06-26
      • 1970-01-01
      • 2010-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-11
      相关资源
      最近更新 更多