2
我想要子類NSTokenField
,我需要在初始化過程中設置一些ivars,但我無法工作哪個初始化程序必須重寫。該文檔沒有說明token標記字段繼承的NSTokenField
或NSTextField
的指定初始值。什麼是NSTokenField指定的初始化程序?
我試着重寫-initWithFrame:
和-init:
但他們也沒有被調用。
我想要子類NSTokenField
,我需要在初始化過程中設置一些ivars,但我無法工作哪個初始化程序必須重寫。該文檔沒有說明token標記字段繼承的NSTokenField
或NSTextField
的指定初始值。什麼是NSTokenField指定的初始化程序?
我試着重寫-initWithFrame:
和-init:
但他們也沒有被調用。
它應該是initWithFrame:
(如果您在代碼中創建文本字段)或initWithCoder:
(如果字段是在XIB(Interface Builder)文件中創建的)。
這是因爲NSTokenField
繼承自NSView
,它符合NCoding
協議。所以這對於從NSView
繼承的其他對象也是有效的。
因此,基本上,你應該在子類中重寫兩個:
- (id)initWithFrame: (NSRect)frame;
- (id)initWithCoder: (NSCoder *)decoder;
謝謝'-initWithCoder:'工作做到了。 – Jacopo