所以我试图通过子类化 NSTableCellView 和 cellview 内的 NSTextField 来创建自定义 NSTableView。我正在尝试在initWithFrame:
NSTextField 子类(TableTextField)的方法中编写一些初始化代码,但看起来该initWithFrame:
方法根本没有被调用,即使我为 NSTableView 创建新行,每行都包含一个实例表文本字段。这是 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 行):