0

正如标题中所说,我的 UIButtons 的 IBOutletCollection 在 vi​​ewDidLoad 之后是空的。我以同样的方式创建了一个 UILabels 的 IBOutletCollection,这个工作得很好。知道如何解决这个问题,或者我在哪里犯了错误?

这是代码:

@property (strong, nonatomic) IBOutletCollection(UILabel) NSArray *lbl_save;
@property (strong, nonatomic) IBOutletCollection(UILabel) NSArray *lbl_cancel;
@property (strong, nonatomic) IBOutletCollection(UILabel) NSArray *lbl_edit;

@property (strong, nonatomic) IBOutletCollection(UIButton) NSArray *btn_changeData;
@property (strong, nonatomic) IBOutletCollection(UIButton) NSArray *btn_save;
@property (strong, nonatomic) IBOutletCollection(UIButton) NSArray *btn_cancel;

按钮放置在 xib 中并正确链接到相应的插座。就像标签一样。 网点链接

我按下其中一个按钮的时间是第一次,我想访问代码中的按钮。

for (UIButton *btn in _btn_changeData) {
    btn.hidden = NO;
    btn.userInteractionEnabled = YES;
}
for (UIButton *btn in _btn_save) {
    btn.hidden = YES;
    btn.userInteractionEnabled = NO;
}
for (UIButton *btn in _btn_cancel) {
    btn.hidden = YES;
    btn.userInteractionEnabled = NO;
}
for (UILabel *lbl in _lbl_save) {
    lbl.hidden = YES;
}
for (UILabel *lbl in _lbl_cancel) {
    lbl.hidden = YES;
}
for (UILabel *lbl in _lbl_edit) {
    lbl.hidden = NO;
}

这也是我得到以下异常并意识到我的 Button OUTletcollection 为空的地方。

-[UIButton countByEnumeratingWithState:objects:count:]:无法识别的选择器发送到实例 0xa8a8850 在此处输入图像描述

我既不覆盖 outletcollection,也不更改按钮的属性。只是标签在集合中,而按钮不在。我不知道为什么。

提前谢谢任何帮助。

小牛

4

1 回答 1

1

我想到的第一个想法是属性没有正确合成。真的是财产_btn_changeData背后的ivar吗?btn_changeData

第二个想法是我在调试别人的代码时看到的。当插座连接不正确时,例如,如果控制器引用自身,则可以创建两个控制器实例。显然,只有其中的一个将连接插座。确保仅创建实例。

对于调试,自己实现设置器可能是一个好主意。

编辑:重读后,问题实际上与您在问题中所说的不同。错误信息-[UIButton countByEnumeratingWithState:objects:count:]: unrecognized selector sent to instance 0xa8a8850

并不意味着这_btn_changeData是一个空数组。这意味着有一个UIButton而不是一个数组。话虽如此,您应该检查您是否没有在_btn_changeData某处覆盖数据。

于 2013-04-06T10:54:25.760 回答