0
-(id) initForNewItem{
    self = [super initWithNibName:@"EmployeeDetailViewController" bundle:nil];
    if(self){
        [nameField setDelegate:self];
        [pinField setDelegate:self];
    }
    return self;
}

在这种情况下,代表没有成功设置。但是,如果我进入 xib 文件并 ctrl-click + 将 UITextFields 拖到文件所有者上并通过它将它们设置为委托,它就可以工作。有人可以解释为什么在 init 方法中调用 setter 方法不起作用吗?

4

1 回答 1

0

在 init 方法中,视图尚未加载。所有的视觉设置都必须在 viewController 的生命周期中进一步完成,至少在 viewDidLoad 方法中。或者,如果您不使用 .xib 解决方案,您可以在手动将视图加载到 loadView 方法时执行此操作。

因此,init 方法中的两个标签都为零,并且无法设置委托。

于 2013-06-22T10:58:08.653 回答