Ios 无法将IBOutlet从情节提要连接到UIView子类

Ios 无法将IBOutlet从情节提要连接到UIView子类,ios,swift,xcode,interface-builder,xcode-storyboard,Ios,Swift,Xcode,Interface Builder,Xcode Storyboard,我可以右键单击并从自定义UIView子类文件拖动到情节提要元素以连接它们,但无法通过其他方式进行连接。我相信这是一个Xcode错误。我能做些什么来解决这个问题吗?这已经不是第一次了,而且很烦人 我已经多次尝试清理和重新启动Xcode,但都没有成功 这不起作用(右键单击从故事板到Swift文件) 这是有效的(从swift文件的iAction右键单击到情节提要) 顺便说一句,我使用的是Xcode 8.1和Swift 3.0 更新:我不是在寻找如何连接iOutlets/iActions的答案,因为

我可以右键单击并从自定义UIView子类文件拖动到情节提要元素以连接它们,但无法通过其他方式进行连接。我相信这是一个Xcode错误。我能做些什么来解决这个问题吗?这已经不是第一次了,而且很烦人

我已经多次尝试清理和重新启动Xcode,但都没有成功

这不起作用(右键单击从故事板到Swift文件)

这是有效的(从swift文件的iAction右键单击到情节提要)

顺便说一句,我使用的是Xcode 8.1和Swift 3.0


更新:我不是在寻找如何连接iOutlets/iActions的答案,因为正如我在上面的问题中提到的(以及在截图中提到的),我已经能够连接它们,并且应用程序运行良好。问题是为什么Xcode不允许我从故事板>Swift文件进行连接,而是允许我从Swift文件>故事板进行连接。如果问题有误导性,我很抱歉。

按ctrl键,然后拖动到swift文件并创建出口。

1:将类指定给viewController

2:使用Shift-Alt-Cmd-K清理项目

3:首先退出Xcode并清除派生数据。
转到:~/Library/Developer/Xcode/DerivedData

检查
IBOutlet
是否未连接:

  • 这个类是在故事板中定义的吗

    情节提要
    中选择
    UIViewController
    ,然后在屏幕右侧选择
    身份检查器
    ,并分配适当的类别

  • 您定义的插座类型是否与故事板上的插座类型匹配? 例如,我们连接
    ui按钮
    ,然后插座应该是这样的,为插座编写代码,然后连接到视图控制器:

    @IBOutlet weak var theButton: UIButton!
    

  • 在Objective-C中创建这样的出口

    @property (nonatomic, weak) IBOutlet UIView *view;
    
    或者像斯威夫特3

    @IBOutlet weak var instruction: UILabel?
    
    然后按图中所示连接它


    有时,由于子类化,连接操作和出口的正常方式不起作用。这种方法在这种情况下非常方便。

    另一种方法就是在视图控制器中手动创建按钮名称,如下所示-

    @IBOutlet weak var button: UIButton!
    
    然后通过拖动连接按钮以查看控制器,如图所示[!


    PS:-也请清理派生数据。

    在尝试了一些给定的解决方案后,最终成功的方法是重新启动my macbook。这似乎是XCode方面的一个bug。哦,好吧。

    我们有时也会看到这个问题,因为
    XCode 8
    ,并假设这是一个XCode bug

    作为解决办法:

    • 在代码
      @IBOutlet弱var myUiElement:UIView!中写入插座。

    • 按住Ctrl键并将其从插座拖动到情节提要中的UI元素


    它是基本的,但容易忽略。请确保将插座拖动到的视图控制器标记为您创建的自定义类


    我已通过以下过程解决了问题

  • 将情节提要视图与任何其他ViewController连接
  • 现在,将所需的ViewController与情节提要重新连接

  • 希望这对您有用!!

    是的,您可以先用鼠标选择可编辑的Ctrl+Dreg连接到swift文件并创建IBOutlet和IBActionstry,然后先编写IBOutlet,然后将其连接到适当的视图。@NikhilManapure是的,这样做有效。但反过来做不行。奇怪的是,它工作正常我的其他ViewControllers,就是我无法做到的这个特定UIView。这主要是因为XCode错误,因为XCode更新太多,有时也是因为XCode无法识别类。这已经发生在我身上太多次了。这是一个UIView子类,我已经做了所有这些,但运气不好:(我也有同样的问题,但当我按照你所描述的那样做时,当我运行应用程序时,变量为零。xcode显示了连接,但我不认为这真的发生了,因为变量为零。我使用的是xcode 9,我知道它有很多错误,但UIView子类中可能不支持IBoutlet。是的!找到了困难的方法!谢谢。我是如何做到的。)在创建xib后,Xcode中的默认设置是什么?谢谢你的回答。省去了我的一些麻烦。。。