2016-12-02 163 views
8

我能够右键单击并从我的自定义UIView子类文件拖动到连接它们的故事板元素,但无法以其他方式进行操作。我相信这是一个Xcode错误。有什么我可以做的,以解决这个问题?这已经不是第一次,它已经发生并且令人讨厌。无法将IBOutlet从故事板连接到UIView子类

我已经尝试清洗并重新启动Xcode几次,没有运气。

This does not work 这不起作用(从故事板右键单击斯威夫特文件)

This works 这个工作(从SWIFT文件的IBAction为右键单击以故事情节)

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

更新:我没有找到关于如何连接IBOutlets/IBActions的答案,因为正如我在上面提到的问题(以及截图中),我已经能够连接它们并且应用程序运行良好。问题更多的是为什么Xcode不会让我连接Storyboard> Swift文件,但让我从Swift文件> Storyboard中这样做。如果问题有误导性,我很抱歉。

+0

是你可以做的第一选择UILable按Ctrl +沉渣与鼠标连接SWIFT文件,并创建IBOutlets和IBActions –

+0

建议先写IBOutlet中,然后将其连接到相应的视图。 –

+0

@NikhilManapure是的,工作。但反过来这样做并不是。奇怪的是,它在我的其他ViewControllers上工作正常,只是这个特定的UIView,我无法这样做。 –

回答

13

Xcode 8以来,我们有时也会看到此问题,并认为这是Xcode错误。

作为一种变通方法:

  • 写出口代码@IBOutlet weak var myUiElement: UIView!

  • 从出口
  • CTR +拖动到UI元素在故事板

+0

我有同样的问题,但是当我做你所描述的,变量当我运行这个应用程序时,xcode显示了这个连接,但是我认为它并没有真正发生,因为这些变量是零。我使用的是xcode 9,我知道它的错误是地狱,但也许不支持IBOutlets在UIView子类中。 – u84six

-2

按ctrl比拖动swift文件并创建插座。

-1

1:将类分配给viewController。

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

3:首先退出Xcode并清除导出的数据。 打算:〜/资源库/开发/ Xcode中/ DerivedData

+0

它是一个UIView子类,我已经做了所有没有运气:( –

0

检查事项是否IBOutlet不连接:

  1. 是在故事板中定义的类?

    storyboard中选择UIViewController,然后在屏幕的右侧选择identity inspector并分配相应的类。

  2. 您定义的插座类型是否与storyboard上的插座类型匹配? 例如,我们连接UIButton,则插座应看起来像,写出口处的代码,然后连接到视图控制器:

    @IBOutlet weak var theButton: UIButton! 
    
2

创建出口像这样在Objective-C

@property (nonatomic, weak) IBOutlet UIView *view; 

或如在迅速3

@IBOutlet weak var instruction: UILabel? 

然后连接它作为给定的这个图片。

enter image description here

有时连接动作和出口由于子类不工作的正常方式。这种方式适用于这种情况。

-1

另一种方式只是视图控制器手动创建按钮名称,像这样 -

@IBOutlet weak var button: UIButton! 

然后通过拖放操作将连接您的按钮来查看显示控制器作为图像[! PS: - 请清除您的派生数据。

0

尝试了一些给定的解决方案后,终于工作是通过重新启动我的macbook。这似乎是XCode方面的一个错误。好吧。

+0

即使重新启动并没有帮助我... – kelin

0

它的基本的,但很容易忽视。确保将拖动插座的视图控制器连接到您创建的自定义类。

enter image description here