2011-04-22 65 views
0

當我犯了一些熱鍵錯誤或錯誤時,我可能搞砸了一些設置或其他東西。不知道,但通常我可以按Ctrl +單擊並拖動到「文件的所有者」,我之前製作的網點會顯示正確。XCode和界面生成器問題:無法通過IBOutlet連接UI元素

現在它不。不知道如何解決這個問題。

+0

只顯示「委託」了。 – SatoKi 2011-04-22 02:54:45

回答

0

不知道是否有鍵盤快捷方式會導致此行爲,但只是爲了確定您應該檢查以確保您期望看到的插口出現在Connections Inspector(右側的Utilities抽屜)中。請記住,此面板會隨着您在項目中選擇元素而發生變化。

如果您在檢查器中看到了正確的插座,但仍然沒有獲得所需的Ctrl +單擊行爲,我會嘗試重新打開您的項目,重新啓動XCode或找到並刪除XCode prefs文件。

祝你好運!

+0

我收到「New Reference Outlet」。 – SatoKi 2011-04-22 05:58:27

1

「......平時我能夠CTRL +單擊並拖動到‘文件的所有者’,」

增加額外IBOutlet s到你的控制器類之後,一般設置它們的接口通過將控制器對象拖動到查看項目,而不是其他方式。 (這裏,一個控制器對象通常是File's Owner,'應用程序'或實例化的自定義控制器對象)。

不太頻繁,則可能從拖動觀點本身控制器對象(一個或多個)或其它視圖對象,設置類特定IBOutlet就像delegate,和/或dataSourcemenuformatter,等等。例如,NSTextField增加了一個delegate和一個formatterIBOutletNSViewmenunextKeyViewIBOutlet s。

因此,您可能需要仔細檢查一下是否正在爲正在討論的對象拖動正確的方向。

如果你知道你正朝着正確的方向拖動,並且界面生成器不像通常那樣運行,那麼你可能會嘗試幾件事情。首先,如果您向控制器類中添加了其他IBOutlets並嘗試在Interface Builder中將它們掛鉤,請仔細檢查您是否確實爲所需的視圖對象指定了適當的類。例如,要添加新的IBOutlet,我有時會複製現有的一行,例如IBOutlet NSTextField *textField;,然後粘貼它。然後我將名稱更改爲tableView(打算將IBOutlet連接到NSTableView),但我忘記將NSTextField更改爲NSTableView。所以當我去Interface Builder並嘗試通過從控制器類拖動到NSTableView來「掛接」IBOutlet時,它不會顯示彈出菜單,因爲表視圖和文本字段是兩種不同類型的對象。

其次,您可能會發布.h文件的內容。你可能已經忘記了;,或者有其他可能導致解析的情況。h文件(通過Xcode然後將結果傳遞給Interface Builder)中途通過。當這種情況發生時,它可以防止許多IBOutlet等出現在IB中。您也可以嘗試編譯代碼,以幫助查明問題所在。我有時自己做這個。

0

我有同樣的問題:

  1. 我在Xcode項目增加了一個TableViewController文件。
  2. 我在正確的頭文件中添加了正確的IBOutlet屬性。
  3. 我在IB中添加了一個TableViewController。
  4. 我將控件添加到IB中的TableView中。

但我不能在IB的控制連接到插座。問題是,我沒有在TableViewController類IB與我在Xcode創建的類相關聯。解決方案:在IB的身份檢查器中爲TableViewController指定自定義類。