Objective c 使用NSImageView?
我已经创建了一个从NSImageView派生的类。但是,没有调用类的构造函数(init),因此我猜init不是NSImageView的正确初始值设定项 NSImageView的正确初始值设定项是什么?我签出了,但他们似乎没有提到正确的init函数。谷歌搜索似乎也没有提供任何具体的信息 我找到了一个可能的构造函数: -(id)initWithFrame:(NSRect)frameRect 但我不确定这是否是正确的电话。我不太确定frameRect是什么Objective c 使用NSImageView?,objective-c,macos,cocoa,Objective C,Macos,Cocoa,我已经创建了一个从NSImageView派生的类。但是,没有调用类的构造函数(init),因此我猜init不是NSImageView的正确初始值设定项 NSImageView的正确初始值设定项是什么?我签出了,但他们似乎没有提到正确的init函数。谷歌搜索似乎也没有提供任何具体的信息 我找到了一个可能的构造函数: -(id)initWithFrame:(NSRect)frameRect 但我不确定这是否是正确的电话。我不太确定frameRect是什么 NSImageView的默认初始值设定项/构
NSImageView的默认初始值设定项/构造函数是什么?注意,我正在开发一个桌面应用程序,而不是一个iOS应用程序,如果这有区别的话。NSImageView子类对象是通过Interface Builder放置在窗口中的,而不是以编程方式 如果它来自nib/xib,则initWithCoder:
-(id)initWithCoder:(NSCoder *)coder
如果它来自nib/xib,则initWithCoder:
-(id)initWithCoder:(NSCoder *)coder
从
NSView
派生的类可以使用initWithFrame
以编程方式初始化,或者使用awakeFromNib
从NIB文件加载时初始化。我所做的是调用一个公共的、私有的方法来执行初始化,而不管它们是如何加载的:
// Private methods
@interface MyViewSubclass ()
- (void)_setupView;
@end
@implementation MyViewSubclass
- (id)initWithFrame:(NSRect)frame
{
self = [super initWithFrame:frame];
if (self != nil)
{
[self _setupView];
}
return self;
}
- (void)awakeFromNib
{
[self _setupView];
}
// Common initialisation (called by initWithFrame: and awakeFromNib).
- (void)_setupView
{
// Set stuff up
}
从
NSView
派生的类可以使用initWithFrame
以编程方式初始化,或者使用awakeFromNib
从NIB文件加载时初始化。我所做的是调用一个公共的、私有的方法来执行初始化,而不管它们是如何加载的:
// Private methods
@interface MyViewSubclass ()
- (void)_setupView;
@end
@implementation MyViewSubclass
- (id)initWithFrame:(NSRect)frame
{
self = [super initWithFrame:frame];
if (self != nil)
{
[self _setupView];
}
return self;
}
- (void)awakeFromNib
{
[self _setupView];
}
// Common initialisation (called by initWithFrame: and awakeFromNib).
- (void)_setupView
{
// Set stuff up
}
你所说的“如果它来自一个笔尖/锡伯”是什么意思?看看@Riddler(和+1)给他的答案。NSImageViews可以在用户界面(xib或nib)文件中创建,也可以通过编程方式创建。我只是用一个通用的NSView子类尝试了它,在10.7上为我调用了initWithFrame,但没有调用initWithCoder。不知道为什么-我知道在过去,我们必须在某些事情上覆盖initWithCoder,尽管awakeFromNib被更频繁地使用。@EricS initWithCoder似乎在我的机器上工作得很好,谢谢!是的,当我尝试NSImageView子类而不是直接NSView子类时,它在这里也起作用。电脑有时很奇怪。你说的“如果是从一个笔尖/锡伯”是什么意思?看看@Riddler(和+1)给他的答案。NSImageViews可以在用户界面(xib或nib)文件中创建,也可以通过编程方式创建。我只是用一个通用的NSView子类尝试了它,在10.7上为我调用了initWithFrame,但没有调用initWithCoder。不知道为什么-我知道在过去,我们必须在某些事情上覆盖initWithCoder,尽管awakeFromNib被更频繁地使用。@EricS initWithCoder似乎在我的机器上工作得很好,谢谢!是的,当我尝试NSImageView子类而不是直接NSView子类时,它在这里也起作用。电脑有时很奇怪。