2012-06-30 61 views
1

我創建了一個派生自NSImageView的類。然而,類的構造函數(init)沒有被調用,所以我猜init不是NSImageView的正確初始化方法。使用NSImageView?

什麼是NSImageView的正確初始值設定項?我檢查了manuals,但他們似乎沒有提到正確的init函數。谷歌搜索似乎沒有提供任何具體的results

我已經找到了可能構造:

- (ID)initWithFrame:方法(的NSRect)frameRect

,但我不知道這是正確的調用。我不太確定frameRect是什麼。

什麼是NSImageView的默認初始值設定項/構造函數?注意我正在開發一個桌面應用程序而不是iOS應用程序,如果這樣做有所不同。NSImageView子類對象已通過Interface Builder放置在窗口中,而不是通過編程方式。

回答

1

如果從筆尖/廈門國際銀行的,的initWithCoder:從NSView衍生

-(id)initWithCoder:(NSCoder *)coder 
+0

你是什麼意思「如果它是來自nib/xib」? – fdh

+0

看看@Riddler的回答(和他+1)。除了以編程方式創建外,NSImageViews可以在用戶界面(xib或nib)文件中創建。 –

+0

我只是嘗試了一個通用的NSView子類,並且initWithFrame在10.7被調用,但不是initWithCoder。不知道爲什麼 - 我知道在過去,我們必須重寫initWithCoder,儘管awakeFromNib更頻繁。 – EricS

4

類可以以編程方式使用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 
}