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)中执行此操作?