无法将IBOutlet从故事板连接到UIView子类

时间:2016-12-02 12:23:11

标签: ios swift xcode interface-builder xcode-storyboard

我可以右键单击并从我的自定义UIView子类文件拖动到storyboard元素以连接它们,但无法通过其他方式执行此操作。我相信这是一个Xcode错误。有什么办法可以解决这个问题吗?这不是它第一次发生而且很烦人。

我已经尝试过多次清理和重启Xcode,但没有运气。

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

This works 这有效(从swift文件的IBAction到故事板右击)

顺便说一句,我正在使用Xcode 8.1和Swift 3.0。

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

9 个答案:

答案 0 :(得分:21)

Xcode 8以来,我们有时也会看到这个问题,并假设这是一个Xcode错误。

作为解决方法:

  • 在代码@IBOutlet weak var myUiElement: UIView!

  • 中写下插座
  • Ctrl +从插座拖动到故事板中的UI元素

答案 1 :(得分:9)

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

enter image description here

答案 2 :(得分:4)

在Objective-C

中创建这样的插座
@property (nonatomic, weak) IBOutlet UIView *view;

或在swift 3中

@IBOutlet weak var instruction: UILabel?

然后按照此图片中的说明连接它。

enter image description here

有时,连接动作和插座的正常方式由于子类化而无法正常工作。这种方式对于这种情况很方便。

答案 3 :(得分:3)

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

答案 4 :(得分:1)

检查IBOutlet是否无法连接的事项:

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

    UIViewController中选择storyboard,然后在屏幕右侧选择identity inspector并指定相应的课程。

  2. 您定义的插座类型是否与storyboard上的插座匹配? 例如,我们连接UIButton,然后插座应该是这样的,编写插座的代码,然后连接到视图控制器:

    @IBOutlet weak var theButton: UIButton!
    

答案 5 :(得分:0)

我已通过以下步骤解决了问题。

  1. 将故事板视图与任何其他ViewController连接起来。
  2. 现在,将所需的ViewController与情节提要板重新连接。

希望这对您有用!

答案 6 :(得分:-2)

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

$model = User::newQuery();
$model->where('published', 1);
$model->get();

然后通过拖动连接您的按钮以查看控制器,如图所示[! enter image description here

PS: - 请清理你的派生数据。

答案 7 :(得分:-3)

1:将类分配给viewController。

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

3:首先退出Xcode并清除派生数据。 去:〜/ Library / Developer / Xcode / DerivedData

答案 8 :(得分:-5)

按ctrl而不是拖动到swift文件并创建插座。