如标题中所述,我的IBOutletCollection of UIButtons在viewDidLoad之后是空的。 我以同样的方式创建了一个UILabel的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,也不会更改按钮的属性。 它只是标签在集合中而不是按钮。我不明白为什么。
提前获取任何帮助。
微型飞行器
答案 0 :(得分:1)
我想到的第一个想法是属性没有正确合成。 _btn_changeData
真的是btn_changeData
属性后面的ivar吗?
第二个想法是我在调试其他人的代码时看到的。当出口连接不正确时,例如,如果控制器引用自身,则可以创建两个控制器实例。显然,只有它们会连接出口。确保只创建了实例。
对于调试,自己实现setter可能是个好主意。
编辑:
重读后,问题实际上与您在问题中说的不同。错误消息-[UIButton countByEnumeratingWithState:objects:count:]: unrecognized selector sent to instance 0xa8a8850
并不意味着_btn_changeData
是一个空数组。这意味着有UIButton
而不是数组。
说完这些之后,你应该检查一下你是否覆盖了_btn_changeData
中的数据。