正如标题中所说的,我的IBOutletCollection of UIButtons在viewDidLoad之后是空的。我以同样的方式创建了一个IBOutletCollection of UILabels,而且这个非常完美。你知道怎么解决这个问题吗,或者我犯了什么错误?
以下是守则:
@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,也不更改按钮的属性。只是标签在集合中而按钮不在。我也不知道为什么。
提前找人帮忙。
Mav
发布于 2013-04-06 10:54:25
我首先想到的是,这些属性没有得到正确的合成。_btn_changeData真的是btn_changeData属性背后的伊瓦尔吗?
第二个想法是我在调试别人的代码时看到的。例如,如果控制器引用自身,则可以创建两个控制器实例。很明显,只有他们中的一些人才会把插座连接起来。确保只创建实例。
对于调试来说,自己实现setter可能是个好主意。
编辑:重读后,问题实际上是不同的,他们说你的问题。错误消息-[UIButton countByEnumeratingWithState:objects:count:]: unrecognized selector sent to instance 0xa8a8850
并不意味着_btn_changeData是一个空数组。这意味着存在一个UIButton而不是一个数组。尽管如此,您应该检查是否在某个地方覆盖_btn_changeData中的数据。
https://stackoverflow.com/questions/15849575
复制相似问题