5

我有一个加载 Nib 的子类 UIButton:

@implementation BlaButtonVC

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        NSArray *subViews = [[NSBundle mainBundle] loadNibNamed:@"BlaButton" owner:self options:nil];
        [self addSubview:subViews[0]];
    }
    return self;
}

@end

我可以将此按钮添加到视图中,如下所示:

// ViewController.m

BlaButtonVC *button = [[BlaButtonVC alloc] initWithFrame:CGRectMake(10, 10, 280, 44)];

button.titleXLabel.text = @"Nyuff";
button.descLabel.text = @"Kukk";

[self.view addSubview:button];

我的问题是我不知道如何从 Interface Bulder 做到这一点,如何使用这个 UIButton 子类而不是普通的子类。

已经将按钮类型更改为自定义,自定义类更改为 BlaButtonVC,但这还不够。它会调用 BlaButtonVC initWithFrame,但按钮既不会出现在 Interface Builder 中,也不会出现在 Simulator 中。

我错过了什么?

在这里您可以找到完整的示例:
https ://www.dropbox.com/s/ioucpb6jn6nr0hs/blabla1.zip

4

2 回答 2

6

从 初始化时StoryBoard,它调用方法initWithCoder:而不是initWithFrame:。除此之外,一切都是正确的。

于 2012-12-09T09:35:04.540 回答
0

在 Interface Builder 中,您不能将子视图添加到UIButton,所以这里有一些想法:

  1. 用代码来做。
  2. 将按钮放在标签和图像下方,这样它就会收到触摸并按预期工作。
  3. 与单元格一起使用UITableView(这看起来像您要实现的目标)。
  4. 将自定义UIViewUITapGestureRecognizer.
于 2012-12-09T12:52:58.603 回答