【问题标题】:Xcode 6: can't connect any IBOutlet to ViewControllerXcode 6:无法将任何 IBOutlet 连接到 ViewController
【发布时间】:2014-11-29 23:44:15
【问题描述】:

升级到 Xcode 6 后,我打开了一个旧项目(其中包含一个子项目,因此它有很多目标) 我注意到我的 Storyboard ViewContoller 没有链接到相关对象。

例如,我有一个 ViewController,里面有一个 TableView,但现在我不能用它做任何事情,因为连接丢失了,我什至不能在 VC 中重新定义一个新的 IBOutlet,因为情节提要中的箭头来自VC 不会连接到任何东西。

为了更清楚:

类是在自定义类部分定义的,所以找不到问题

我该怎么办? 顺便说一句,我使用的是 obj-c 而不是 swift,我找到了一些相关的答案,但都是关于 swift 的。

【问题讨论】:

  • 确保在照片的模块字段中选择了您的模块。
  • 编辑:将新的 IBOutlet 与 Storyboard 中的箭头连接到 Class Code 插入它,但连接不起作用并像之前的两个一样显示黄色警告。
  • 嗨史蒂夫,我也相信这个问题与模块有关,但该部分下没有可用的。我该如何解决?
  • 哦哦!让我看看我的一个项目!
  • stackoverflow.com/questions/25931865/…说是XCode 6的bug,下载6.1,试试看回来。

标签: ios objective-c xcode xcode6 uistoryboard


【解决方案1】:

您还可以看到父视图和自定义类之间的链接断开(不再可见),这是一个大问题。

我在实际使用的应用程序中遇到了完全相同的问题,将 XCode 从 5.xxx 更新到 6.1。对我有用的解决方法是删除每个视图控制器的引用并将它们重新添加到项目中......

对于所有面临这个问题的人来说,这是一个(烦人的)技巧:

  • 第 1 步:同时选择 .h 和 .m 视图控制器文件
  • 第 2 步:删除这些文件的引用
  • 第 3 步:将文件重新添加到项目树中
  • 第 4 步:打开故事板,最终重新构建项目并微笑

我能理解那些事情可能真的很烦人,但它对我有用......希望它对其他人有帮助!

【讨论】:

  • 我已经升级到 XCode 6.1,然后添加了一个视图控制器,也许我做错了什么但 IBOutlets 无法连接。由于语法突出显示也崩溃了,因此有些可疑。删除引用并重新添加就像一个魅力!
  • 你刚刚让我的电脑免于损坏
  • 这是一个很棒的答案。帮助我摆脱了我的大挣扎。谢谢。
【解决方案2】:

在故事板层次结构中选择视图控制器,

在右侧窗格中的自定义类部分Class,选择下拉列表和所需的视图控制器。

【讨论】:

  • 非常感谢!当我添加一个新的时,我重命名了我的ViewControllers,它弄乱了我的拖放连接。果然,当我检查分配给它的Class 时,它说的是旧的ViewController 名称。从下拉列表中选择正确的名称修复它。
【解决方案3】:

尝试将第一个出口添加到新视图时,我在 Xcode 6.1.1 中遇到过类似的行为。

尝试按照上面的建议删除引用并再次添加文件,但没有成功。

我确实发现有用的是手动在新视图上编写第一个属性。我刚进来:

@property NSString *temp;

然后我可以以正常方式连接我的插座。添加第一个插座后,只需删除临时属性即可。

希望这会有所帮助。

【讨论】:

  • 刚刚在 Xcode 7.2 中遇到过这个问题。完全令人沮丧,不敢相信这仍然是一个问题 - 感谢您发布此信息!
【解决方案4】:

似乎先输入插座(swift):

@IBOutlet weak var someViewOutlet: UIView!

然后将上面代码中的出口从 IB 拖到最右边的类型就可以了。

重新启动 Xcode 可以解决问题(有时)。使用 Xcode 6.1

【讨论】:

  • 有效! (赞美主):我只是想添加几个cmets:如果你想获得正确的变量类型NSConstraint,例如尝试Ctrl+从UI元素拖动到代码并查看类型,但点击CANCEL或Xcode 会崩溃。既然您知道确切的变量类型,就按照 Hugey 所说的那样,手动编写这行代码。最后从代码行左侧的小圆圈中按 Ctrl+Drag,然后将该行放到 View 元素上。
【解决方案5】:

也许我可以帮忙 就我而言,问题是 viewController.swift 文件没有连接到 StoryBoard。解决方案是单击故事板上视图的上边框,在 3 个图标(视图控制器、第一响应者和退出)旁边...现在在实用程序区域中选择身份检查器,然后在“自定义类”中选择自定义视图控制器。

希望这会有所帮助。 Xcode 好难!!

【讨论】:

    【解决方案6】:

    这是我认为的正确解决方案。

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

    我在界面生成器中找不到方法,所以这样做:

    1. 用文本编辑器打开.xib文件:右键文件>打开方式>源代码

    2. <objects> 节点中找到具有placeholderIdentifier="IBFilesOwner" 属性的<placeholder> 节点,并将customClass="MyOldControllerName" 中的值替换为您的新控制器名称:customClass="MyNewControllerName"

    您的所有 IBOutlets 将再次正常工作。

    【讨论】:

    • 当这里的其他方法失败时,这对我有用。就我而言,没有 customClass 属性,但我添加了一个,当我切换回 IB 时,一切都开始工作了。
    【解决方案7】:

    感谢所有评论的人。

    这是 Xcode 6 / 6.0.1 的错误。下载安装6.1版本,问题就消失了。

    【讨论】:

      【解决方案8】:

      也许尝试从情节提要的菜单中删除插座(在您的屏幕截图中),然后再次将其拖动到元素上。

      【讨论】:

      • 不起作用,来自 VC 的箭头无法连接到任何东西,无论是旧的还是新的网点。事实上,如果我删除那个 Outlet,我就再也看不到它了。
      【解决方案9】:

      好的,让我们检查一下是否缺少模块名称。

      1. 在您的故事板 ViewController 中,输入模块的名称。 (项目名称)

      2.在另一个字段中单击外部。当您返回到模块字段时,它可能会显示“无”,但现在您的项目名称将出现一个下拉菜单条目。

      1. 选择您的项目名称,看看是否一切正常。

      如果还有问题我会发照片。

      【讨论】:

      • 试过了,没有成功。 Edit新截图s30.postimg.org/800j7icht/…
      • 去掉“我的”和“照片”之间的空格
      • 还是什么都没有,看上面的新截图。
      • 嗯,能发到github吗?
      【解决方案10】:

      似乎是工作区问题。尝试从工作区中删除项目并再次添加。这对我有帮助。

      【讨论】:

        【解决方案11】:

        我有这个,影响了我机器上的所有项目,快速而客观的 c 让我发疯了很长时间。最后还注意到我也不能使用折射器重命名类。

        我的解决方法是:

        1. 关闭xcode
        2. 删除 ~/Library/Developer/Xcode/DerivedData(仅靠自己这样做是行不通的!!)
        3. 使用以下命令从包含我的所有项目的目录中删除我所有项目的所有用户数据,例如/src(小心这个命令!):

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

        如果您想手工完成,只需为您的所有项目执行以下操作 删除 .xcodeproj/project.xcworkspace/xcuserdata 删除.xcodeproj/xcuserdata/.xcuserdatad

        1. 让 Spotlight 重新索引我所有项目所在的驱动器(不确定是否需要这样做
        2. 重启机器

        一切都恢复了生机!

        【讨论】:

          【解决方案12】:

          我遇到了同样的问题。

          原来我重命名了我的视图控制器类和文件名。在情节提要中,我在右窗格中拥有陈旧的值,自定义类 -> 类。所以 IBOutlets 没有对齐,因为在缺少的类中没有,这是它期望找到定义的出口的地方。

          在右窗格的“自定义类”字段中填写正确的视图控制器类名称解决了我的问题。

          如果自定义类字段中有错误的类名,XCode 需要更详细。

          【讨论】:

            【解决方案13】:

            没有一个解决方案可以解决我同样的问题... 但我已经解决了:

            • 关闭xcode
            • 重命名项目文件夹
            • 打开xcode

            然后网点又会回来

            我希望这个解决方案适合有同样问题的人

            【讨论】:

              【解决方案14】:

              在 Xcode 6.3 中,我需要关闭 Xcode 并重新启动 Mac。单独重启 Xcode 对我没有帮助。

              我已经使用 6.3 很长时间了,我的问题是我正在创建新项目来测试一些东西。这次绝对不是升级问题。

              【讨论】:

                【解决方案15】:

                我有 Xcode 6.3 并看到了类似的问题。最后 .h 文件中的一些编辑解决了我的问题。如果您的接口将 IBOutlet 定义为

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

                将此更改为并在 .m 文件中添加 @synthesize lblName;

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

                【讨论】:

                  【解决方案16】:

                  我遇到了同样的问题,没有可链接到的视图出口。我能够修复它的唯一方法是将 XIB 文件的所有者类更改为“UIViewController”,创建链接,然后将其更改回我想要的自定义视图控制器类。链接保持不变,一切正常。

                  【讨论】:

                    猜你喜欢
                    • 2015-07-05
                    • 1970-01-01
                    • 2017-08-20
                    • 1970-01-01
                    • 2017-06-14
                    • 2018-01-19
                    • 1970-01-01
                    • 1970-01-01
                    • 2023-03-30
                    相关资源
                    最近更新 更多