Objective c 无法在initWithCoder:方法中调用IBOutlets上的方法
我有一个类,它将Objective c 无法在initWithCoder:方法中调用IBOutlets上的方法,objective-c,iboutlet,Objective C,Iboutlet,我有一个类,它将键盘设置为其输入视图 NSArray *bundle = [[NSBundle mainBundle] loadNibNamed:@"FormulaKeyboard" owner:self options:nil]; for (id object in bundle) { if ([object isKindOfClass:[FormulaKeyboard class]]) keyboard = (FormulaKeyboard *)object; }
键盘
设置为其输入视图
NSArray *bundle = [[NSBundle mainBundle] loadNibNamed:@"FormulaKeyboard" owner:self options:nil];
for (id object in bundle) {
if ([object isKindOfClass:[FormulaKeyboard class]])
keyboard = (FormulaKeyboard *)object;
}
在键盘类(NSObject的子类)的init方法中,我尝试设置使用nib创建的几个UIButton的标题文本
- (id)initWithCoder:(NSCoder *)coder {
self = [super initWithCoder:coder];
if (self) {
NSArray *keyboardElements = [delegate provideKeyElements];
[element1 setTitle:[keyboardElements objectAtIndex:0] forState: UIControlStateNormal];
[element2 setTitle:[keyboardElements objectAtIndex:1] forState: UIControlStateNormal];
[element3 setTitle:[keyboardElements objectAtIndex:2] forState: UIControlStateNormal];
[element4 setTitle:[keyboardElements objectAtIndex:3] forState: UIControlStateNormal];
[element5 setTitle:[keyboardElements objectAtIndex:4] forState: UIControlStateNormal];
}
return self;
}
但是,按钮不接收消息。当我将代码实现到另一个方法中时,setTitle:methods工作得很好,但是我希望在创建键盘后立即调用这些方法。我已经使用NSLog验证了initWithCoder:方法是否被调用。我还尝试将代码放入awakeFromNib方法中,但这也不起作用。键盘的委托设置在哪里?您是否记录了keyboardElements和element1以查看它们是否为零?键盘的委托是保存视图的viewcontroller,创建keyboardkeyboardElements和element1在int方法中都为零,奇怪的是。但是,如果我将代码放在另一种方法中,也不是nil。我认为initWithCoder在这个过程中还为时过早。是否有某些原因导致您不在视图控制器的ViewWillApperMethod(这是iOS)中执行此操作?