2014-10-05 92 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”,建立链接,然后将其更改回我的预期自定义视图控制器类。链接保持不变,一切都很好。