2014-10-05 94 views
18

升級到Xcode 6後,我打開一箇舊項目(包含一個子項目,因此它有很多目標) ,我注意到沒有從我的Storyboard ViewContoller鏈接到相對對象的作品。XCode 6:無法連接任何IBOutlet到ViewController

例如我有一個ViewController與一個TableView裏面,現在我不能做任何東西,因爲連接丟失,我甚至不能重新定義一個新的IBOutlet在VC中,因爲故事板中的箭頭從VC不會連接任何東西。

更清楚:

screenshot

類在定製類部分定義的,所以我無法找到問題

screenshot

我應該怎麼辦? 順便說一句我正在使用obj-c不是迅捷,我發現了一些相關的答案,但所有關於迅速。

感謝

+0

確保您的照片中的模塊字段中選擇了您的模塊。 – 2014-10-05 15:50:30

+0

編輯:連接一個新的IBOutlet與從故事板的箭頭到類代碼插入它,但連接不起作用,並顯示黃色的警告像以前兩個。 – lorenzop 2014-10-05 15:50:44

+0

嗨史蒂夫,我也相信這個問題與模塊有關,但在該部分下沒有提供。我如何解決這個問題? – lorenzop 2014-10-05 15:58:01

回答

49

您還可以看到父視圖和自定義類之間的鏈接已損壞(不再可見),這是一個巨大的問題。

我和我正在處理的應用程序有完全相同的問題,將XCode從5.xxx更新到6.1。解決這個問題的方法是刪除每個視圖控制器的引用並將它們重新添加到項目中。

爲了大家面對這個問題,這裏的(煩人)絕招:

  • 步驟1:同時選擇h和.M視圖控制器文件
  • 步驟2:刪除參考那些文件
  • 步驟3:重新添加文件到您的項目樹
  • 步驟4:打開故事板,最終重新建立項目和微笑

我能理解這些東西可能是reaaally煩人,但它爲我工作...希望這會幫助別人!

+0

我已經升級到XCode 6.1,然後添加了一個視圖控制器,也許我做了錯誤的事情,但IBOutlets不會連接。突然語法突然崩潰的東西很腥。刪除參考和重新添加工作就像一個魅力! – vikke 2015-01-07 18:04:46

+0

你剛剛保存我的電腦不被打破 – 2015-09-16 14:18:35

+0

這是一個很棒的答案。幫助我擺脫我的大斗爭。謝謝。 – Neela 2017-10-19 20:41:03

0

也許嘗試刪除從故事板菜單出口(在你的截圖),並再次將其拖動的元素。

+0

不起作用,來自VC的箭頭不會連接到任何新舊商店。事實上,如果我刪除該Outlet,我就再也看不到它了。 – lorenzop 2014-10-05 15:31:29

0

好吧,讓我們來看看是否缺少模塊名稱。

  1. 在您的故事板ViewController中輸入模塊的名稱。 (項目名稱)

2.在另一個領域的外面打招呼。當你回到模塊領域時,它可能會說沒有,但現在將有一個下拉菜單項爲您的項目名稱。

  1. 選擇您的項目名稱並查看是否一切正常。

如果仍有問題,我會發布照片。

+0

試過,沒有成功。 [EDIT]新截圖http://s30.postimg.org/800j7icht/Schermata_2014_10_05_alle_18_09_14.png – lorenzop 2014-10-05 16:11:38

+0

擺脫「我的」和「攝影圖像」之間的空間 – 2014-10-05 16:14:07

+0

還沒有,請參閱上面的新截圖。 – lorenzop 2014-10-05 16:18:03

1

感謝所有評論過的人。

這是Xcode 6/6.0.1的一個bug。下載並安裝了6.1版本並且問題消失了。

+2

不適用6.1也適用 – 2015-03-12 06:42:40

4

它似乎首先鍵入出口(SWIFT):

@IBOutlet weak var someViewOutlet: UIView! 

,然後從IB出口拖動到最右邊的類型在上面的代碼工作。

重新啓動Xcode可以解決問題(有時)。使用Xcode 6.1

+0

它的工作原理! (讚美主):我只是想添加一些評論:例如,如果你想獲得正確的變量類型NSConstraint,例如,嘗試Ctrl +從UI元素拖動到代碼並查看類型,但單擊CANCEL或Xcode會崩潰。現在您知道確切的變量類型,按照Hugey的說法,手動編寫代碼行。最後做一個Ctrl +拖動從代碼行左邊的小圓圈,並將該行放在View元素上。 – Josh 2015-06-04 10:57:03

0

似乎是一個工作區問題。嘗試從工作區中刪除項目並重新添加。它幫助我的情況。

0

我有這個,影響了我機器上的所有項目,迅速和客觀的c,並使我生氣很久。最後還注意到我無法使用折射器來重命名類。

對我來說,修復是:

  1. 關閉的Xcode
  2. 刪除〜/資源庫/開發/的Xcode/DerivedData(只是這樣做對自己沒有工作!)
  3. 刪除所有用戶數據爲我的所有項目使用以下從目錄中包含我的所有項目,例如/ src(注意這個命令!):

找不到。 -name'xcuserdata'-exec rm -rf {} \;

如果你想手工做只是爲所有的項目 刪除.xcodeproj下面做/ project.xcworkspace/xcuserdata 刪除.xcodeproj/xcuserdata/.xcuserdatad

  • 讓Spotlight將重新索引的驅動器,如果這是需要我的所有項目都是上(不知道
  • 重新啓動機器
  • 一切竄出回到生活!

    0

    我有這個相同的問題。

    原來我重命名我的視圖控制器類和文件名。在故事板中,我在右側窗格Custom Class - > Class中顯示了陳舊的值。所以IBOutlets並沒有調整,因爲在失蹤的班級中沒有任何人,這是它期望找到定義的網點的地方。

    在右側窗格的「自定義類」字段中填寫View Controller的正確類名可以修復我的問題。

    如果您在自定義類字段中有錯誤的類名,則XCode需要更加詳細。

    5

    在嘗試將第一個插座添加到新視圖時,我在Xcode 6.1.1中遇到過類似的行爲。

    嘗試刪除引用並再次添加文件,如上所述,但沒有成功。

    我找到的工作是用手在第一個視圖中寫入第一個屬性。我只是彈出:

    @property NSString *temp; 
    

    我可以然後以正常方式連接我的插座。只要您添加了第一個分店,請刪除臨時房地產。

    希望這會有所幫助。

    +0

    剛剛在Xcode 7.2中遇到過這個問題。完全令人沮喪,不能相信這仍然是一個問題 - 感謝張貼這! – 2016-01-18 23:27:50

    22

    在你的故事板層次選擇視圖控制器,

    enter image description here

    在右窗格中自定義類部分Class,選擇下拉菜單和您所需的視圖控制器。

    enter image description here

    +0

    非常感謝!當我添加一個新的ViewController時,我重命名了我的ViewController,並且它拖拽了我的拖放連接。當然,當我檢查分配給它的'Class'時,它表示舊的'ViewController'名稱。從下拉列表中選擇正確的名稱可以修復它。 – Azurespot 2016-06-30 00:48:57

    0

    沒有一個解決方案固定我同樣的問題... 但我已經被解決:

    • 密切的Xcode
    • 重命名該項目
    • 開放的Xcode
    • 的文件夾

    然後網點會再次回來

    我希望這個解決方案是誰都有同樣的問題

    0

    在Xcode中6.3我需要關閉的Xcode和重新啓動Mac上的人是正確的。單獨重新啓動Xcode並不適合我。

    我已經6.3很長一段時間了,我的問題是我正在創建的新項目來測試一些事情。這次絕對不是升級問題。

    0

    我有Xcode 6.3,看到類似的問題。最後,.h文件中的一些編輯解決了我的問題。如果您的接口將IBOutlet定義爲

    @interface NavigationViewController :UIViewController 
    { 
        IBOutlet UILabel *lblName; 
    } 
    

    將此更改爲.m文件並在.m文件中添加@synthesize lblName;

    @interface NavigationViewController :UIViewController 
    { 
        __weak UILabel *lblName; 
    } 
    
    @property (nonatomic, weak) IBOutlet UILabel *lblName; 
    
    4

    也許我可以幫 在我的情況下,問題是,viewController.swift文件沒有連接到故事板。解決方法是單擊故事板上3個圖標旁邊的視圖的上邊框(View Controller,First Responder和Exit)...現在查看實用工具區域中的選擇Identity Inspector,然後在「Custom Class」中選擇定製視圖控制器。

    希望這會有所幫助。 Xcode很難!

    2

    這是我相信的正確解決方案。

    如果您在代碼中重命名控制器,則需要更新.xib文件。

    我無法找到一個方法來做到這在界面生成器,所以這樣做:

    1. 打開一個文本編輯器的.xib文件:右鍵單擊文件>打開方式>源代碼

    2. <objects>節點找到物業placeholderIdentifier="IBFilesOwner"<placeholder>節點,並與新的控制器名稱替換customClass="MyOldControllerName"值:customClass="MyNewControllerName"

    而你所有的IBOutlets將再次正常工作。

    +0

    當這裏的其他方法失敗時,這對我有用。在我的情況下,沒有customClass屬性,但我添加了一個,當我切換回IB時,所有內容都開始工作。 – 2017-03-02 22:31:34

    0

    我有這個相同的問題,沒有視圖插座可以鏈接到。我能夠修復它的唯一方法是將XIB文件的所有者類更改爲「UIViewController」,建立鏈接,然後將其更改回我的預期自定義視圖控制器類。鏈接保持不變,一切都很好。