因此,我尝试通过在单元视图中继承NSTableCellView和NSTextField来创建自定义NSTableView。我试图在initWithFrame:
方法中为NSTextField子类(TableTextField)编写一些初始化代码,但看起来initWithFrame:
方法根本没有被调用,即使是我为NSTableView创建了新行,每行包含一个TableTextField实例。这是TableTextField.m文件中的代码:
#import "TableTextField.h"
@implementation TableTextField
- (id)initWithFrame:(NSRect)frame//This isn't even being called.
{
self = [super initWithFrame:frame];
if (self) {
self.ad = [[NSApplication sharedApplication] delegate];
}
return self;
}
- (void)mouseDown:(NSEvent*) theEvent{
NSLog(@"A");//TEST
self.ad = [[NSApplication sharedApplication] delegate];//This works. Why isn't it happening in init?
[self.ad.classViewController addHomeworkItem];
}
@end
我已经能够通过在mouseDown:
方法中放入我需要的代码来解决问题,这是我唯一需要的东西,但我觉得这样做不好每次我需要使用它时重新声明self.ad,而不是仅仅声明一次并在每次使用时访问它,我似乎无法弄清楚为什么initWithFrame:
没有被调用。我假设它与NSTableCellViews中的对象的初始化方式有关,但我还没有找到真正的解释。关于如何解决这个问题的任何建议,或者对它为什么会发生的解释都是受欢迎的。谢谢!
这里是NSTableView如何设置的图像(有3行):
答案 0 :(得分:2)
如果您使用XIB文件布局视图,则调用的初始化方法为initWithCoder: