如何以编程方式将UIButton添加到IBOutletCollection

时间:2014-02-14 12:32:07

标签: ios objective-c uibutton iboutletcollection

我需要从代码中创建一堆按钮并将它们添加到IBOutletConnection中。 到目前为止我还没能做到这一点。 当我在storyboard中执行它时,它工作得很好,但我无法以编程方式将按钮添加到集合中。 这是我的代码:

·H

@property (nonatomic, retain) IBOutletCollection(UIButton)NSMutableArray *buttonsArray;

的.m

-(void)createButton
{
    UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];

    [button addTarget:self
               action:nil
     forControlEvents:UIControlEventTouchDown];

    [self writeCloud:button];
    button.frame = CGRectMake(-50, 80, 90, 60);
    [self.view addSubview:button];
    [_buttonsArray addObject:button];
}

我得到的错误是[_buttonsArray addObject:button];说:

  

***由于未捕获的异常'NSInvalidArgumentException'终止应用程序,原因:' - [__ NSArrayI addObject:]:无法识别的选择器发送到实例0x14559050'

有谁可以指出我做错了什么?

1 个答案:

答案 0 :(得分:3)

因为数组不可变。您已在@property定义中指定了此项,但这并未使其成立(如果故事板unarchive将其设置为不可变数组)。

加载视图后我想你可以说:

self.buttonsArray = [self.buttonsArray mutableCopy];

然后你的代码应该可以工作。