2009-11-17 110 views
23

我有一個奇怪的經歷。我創建了任何類型的iPhone應用程序,用Xib文件添加一個UIViewController。我可以用控件編輯xib文件,並在運行時查看它們。現在我正在嘗試將一些IBOutlets添加到控制器,因此我將它們添加到.h文件中,並在.m文件中進行合成。然後我轉到Interface Builder來連接插座。我將UILabel拖動到UIView,然後嘗試連接文件所有者(我的自定義UIViewController),但是當我嘗試連接到UILabel時,所有可以選擇的都是「視圖」,這是顯而易見的錯誤。所以我無法將IBOutlets連接到Interface Builder中的控件。無法在Interface Builder中連接IBOutlet

任何想法?

+1

發佈@interface塊的代碼...你保存了.h文件嗎? – 2009-11-17 02:54:14

+0

import @interface gg:UIViewController IBOutlet UILabel * label; } @property(nonatomic,retain)IBOutlet UILabel * label; @end – haider 2009-11-17 18:59:09

+1

任何想法如何解決相同的xCode4? – Prabh 2011-09-12 19:44:32

回答

40

我做了這個線程中的東西的組合,我終於成功了。

在Interface Builder(不是Xcode的)

  1. 文件 - >刷新所有類文件
  2. 文件 - >閱讀類文件(選擇MyClass.h)
  3. 重新連接文件的所有者通過
    一個。將類設置爲「MyClass」
    b。將視圖重新連接到文件的所有者視圖

現在一切都恢復正常。奇怪的。

希望這有助於超過它混淆;-)

+0

文件選項卡沒有重新加載所有類文件 – coolcool1994 2016-08-10 18:56:54

4

確定文件的所有者正確設置爲自定義的UIViewController以及您已經添加了IBOutlet關鍵字實例變量財產後保存.h文件?

+0

我認爲文件所有者的類型與自定義的UIViewController相同。我很積極,我也保存了.h文件。這裏是.h文件的樣子: #進口 @interface GG:{的UIViewController IBOutlet中 *的UILabel標籤; } @property(nonatomic,retain)IBOutlet UILabel * label; @end – haider 2009-11-17 18:17:25

+0

那真是太奇怪了。您是否嘗試刪除'.xib','.h'和'.m'文件並重新創建它們? – 2009-11-17 18:29:57

+0

是的。我嘗試了所有這一切。也重新啓動。更奇怪的事情是我的老項目不給我這種行爲,但我創建的新項目給我那種經驗。很奇怪。 – haider 2009-11-17 18:33:36

0

所以我不知道爲什麼它不會自動使IBOutlet連接,但我找到了解決方法。我必須通過Interface Builder中的庫爲我的客戶視圖控制器手動添加插座。如果任何人發現修復程序會自動從.h文件中讀取(如它應該的那樣),如果他們發佈它,我會非常感激。

謝謝

3

我有和你一樣的問題。我不知道你是否解決了你的問題,但是我改變了所有類的名字,包括viewcontroller,但是文件的所有者名字保持不變。 因此,我雙擊文件的所有者 - >在打開的窗口中單擊我 - >將Class字段中的名稱更改爲新的viewcontroller名稱。然後它工作。 也許你想再試一次,看看它是否有效。 祝你好運。

3

你確定你是在你的.h文件中定義你的插座作爲適當的類型嗎?如果你正在嘗試中的文本字段IB連接,那麼你的.h文件中應該是這個樣子......

IBOutlet UITextField *MyTextField; 

確保類型是UITextField(或UITextView的,等等)。如果您將它們鍵入爲NSString或任何不適合的內容,則無法將它們連接到Interface Builder ....

6

在界面生成器文件 - >讀取類文件,並將其指向您的文件的所有者類。這爲我修好了。

1

我有同樣的問題,我只是嘗試diatrevolo的建議:單擊文件,然後讀取類文件,並指向您的文件的所有者類。

這爲我修好了。我會+1 diatrevolo,但我沒有任何聲望呢...

0

我是一個總的新手在這,我也有同樣的問題。我去嘗試diatrevolo的建議,並在此過程中發現了導致我的問題的原因。我最初在項目層次結構中隨機地創建了ViewController,然後將它們移動到classes文件夾中。這意味着實際的文件不在類文件夾中,但項目認爲它們是,所以IB在錯誤的位置查找。我使用Finder將實際文件移動到實際的類文件中,然後在項目中刪除並重新讀入它們。然後一切正常!

0

我本地化的一些XIB文件後,該意見並沒有反應在Interface Builder所做的任何更新。簡單的解決方案是從模擬器/設備刪除應用程序。下一個Build &運行正確地更新了應用程序。

這隻發生在模擬器上通過XCode部署應用程序。看起來像XCode正試圖優化構建並且感到困惑。

2

File->Read Class Files (select MyClass.h)爲我做了這份工作。

+1

嘿, 我也有同樣的問題,但無法找到「讀取類文件」在FILE菜單中的選項請幫助.. 我正在使用xcode 4. – 2012-03-20 07:36:50

+0

@AbhinandanSahgal你有沒有找到在xCode 4中的選項。我有同樣的問題。 – Throdne 2012-07-13 23:48:22

3

如果您無法通過右鍵單擊(或CTRL) - >下拉列表將您的UI控件連接到代碼,還有另一種方法。在界面構建器中,按下&,在界面構建器的主窗口中將CTRL,藥物鼠標從「文件所有者」拖放到您的UI控件(標籤,按鈕等)。將會顯示您所有由Outlet定義的dpopdown列表。只是選擇需要一個!

+0

是的,我們知道這個解決方案,但問題是這個插座沒有出現在列表中。 – Neeku 2012-07-29 19:43:44

1

殺死我每一次,但有時如果你只是關閉並重新打開xcode的,東西是固定的......正好我這個確切的問題...

0

我在這裏遇到麻煩過了,什麼結束爲我工作的原因是在打開Interface Builder之前構建應用程序。巫毒!

3

我對最長的問題有同樣的問題。在類標識窗口中將我的文件所有者「類型」更改爲「MyClassViewController」而不是「UIViewController」修復了我的問題。它是有道理的,因爲作爲文件的所有者類型是UIViewController它只會顯示特定於基類的那些屬性。將類型更改爲MyClassViewController可以訪問它的插座和所有繼承的實例。希望這可以幫助!

6

有同樣的問題。

通過雙重檢查我的文件的所有者「類」屬性在身份檢查器修復它。

1

對我來說,問題是我創建了一個MyUITextView擴展UITextView和X代碼would'nt連接。 我的解決方法是在IBOutlet中暫時使用UITextView來連接/鏈接,然後切換到我的自定義視圖。

所以我改變了。

IBOutlet MyUITextView *tv; 

IBOutlet UITextView *tv; 

,然後連接/連接。 連接後,我改變了我的OBOutlet回MyUITextView

IBOutlet MyUITextView *tv; 
1

重新啓動的Xcode 5.1爲我做。

2

XCode -> Product -> Clean

爲我工作。

0

我然後從文件連接到標籤的故事板的UIViewController文本文件寫了

@IBOutlet weak var title: UILabel! 

,和它的工作!

相關問題