編輯:如果有人想看看實際的代碼,那就是: http://pastie.org/713951不能訪問任何網點loadNibNamed
長話短說:我遇到的問題是我不能讓窗口顯示在fly()函數中。
完整說明:
我創建適用於Mac的應用程序 '科達' 的插件。我有一個控制器'大膽',有兩個插座:
@class Bolder;
@interface Bolder : NSObject
{
IBOutlet id MyLabel;
IBOutlet id theWindow;
}
Coda指定它是自己的插件初始化方法。在這個init方法,我加載筆尖「超人」和選擇的方法「飛」點擊我的插件時,將調用:
[NSBundle loadNibNamed:@"Superman" owner:self];
[controller registerActionWithTitle:NSLocalizedString(@"OK!", @"Flying Man") target:self selector:@selector(fly:)];
在「飛」的方法,我想展示的窗口和變化標籤上的文字:
- (void)fly:(id)sender
{
[theWindow orderFront:self];
[theWindow makeKeyAndOrderFront:self];
[MyLabel setStringValue:@"new text"];
}
這最後一點是我扔的部分 - 窗口只顯示不出來!然而,如果我把這三條線放在'awakeFromNib'裏面,它顯示的很好。什麼造成這種差異?我不能把這段代碼放在awakeFromNib裏面,因爲這會導致我的插件窗口在每次啓動Coda時顯示出來。
我試過......沒有什麼區別。 – 2009-11-25 02:44:55
編輯我的答案。 – Darren 2009-11-25 03:54:01
謝謝!這絕對有效,因爲我可以將所有初始化代碼放在'awakeFromNib'中而不是'fly'並且沒關係......但是我仍然想知道爲什麼我無法從fly中訪問任何實例變量或方法。我剛剛創建了一個測試實例方法,我可以從'awakeFromNib'中調用它,但不能從'fly'中調用它;你能想到可能發生的任何原因嗎? – 2009-11-25 04:17:50