2013-05-15 71 views
0

我想創建一個簡單的Mac OS X應用程序,它顯示文本輸出,它正在記錄我的程序。下面是我做的:連接NSTextField的正確方法

1)創建了一個Mac OS X的UI項目

2)增加了一個 「文本字段」 組件到應用程序窗口的MainMenu.xib

3)增加中間一類新的「MainWindow.m」與下列屬性:

@property (assign) IBOutlet NSTextField *mainWindowText; 

4)從文本字段組分與屬性連接了一個「引用出口」。我現在在代碼上面看到一個灰色圓點

5)在我的應用程序中,我創建了一個新的線程,它創建了一個MainWindow的實例。然後我等待5秒鐘,嘗試訪問上面的mainWindowText變量,但它始終爲空。我期待着一個非null變量,所以我可以調用setStringValue:並隨時修改文本。

我嘗試着用doText做類似的事情:當我按下回車鍵並在那裏寫文本時,我能看到回調。不過,我需要一種在任意時間修改文本的方法,我認爲上述屬性是正確的。

我也嘗試添加@synthesize語句,但沒有任何效果。

有什麼建議嗎?

更新:閱讀一些帖子後,我認爲問題是,我正在使用錯誤的主窗口對象。我嘗試在NIB中創建一個NSObject並使其自定義類的類型爲mainWindow,並在其他類中創建了一個IBOutlet(鍵入MainWindow *),但它不會讓我連接這兩個東西,所以我不知道如何訪問我添加到NIB的這個NSObject對象。

回答

0

NIB文件有一個所有者 - 這是你想用來做這個東西的類。事情應該工作的方式是:

  1. 由於NIB文件加載出口引用創建類的實例(所有者,與出口)
  2. 在初始化這個類加載NIB文件
  3. 配置
  4. 回調火災(awakeFromNib)告訴業主所有的配置完成

這是完成後,那麼你就可以訪問該網點。

從你應該有一個NIB文件,一類就是它的主人,所以你應該使用做你的控制任務(當然,直到你跟NIB歸檔更多的經驗),最初的項目。