无法将Storyboard中的插座拖动到XCode的Assistant编辑器中

26

我曾经可以在XCode中做到这一点,但现在在一个由朋友发送的新项目中,我无法做到。

是否有特定的设置需要更改才能重新开始这个过程?

即我想通过代码连接一个文本框,但现在我不能了。 :(

需要大家的帮助!

6个回答

31
你很可能打开了错误的类别,需要检查当前选择的视图控制器并确保与助手编辑器中打开的相同。
或者在助手编辑器中选择自动(请参考截图)。

enter image description here

enter image description here


1
是的,你说得对 :). 谢谢。我没有将那个特定的类声明为我尝试拖动的正确类型的类。 - econclicks

21
我的解决方案很简单,只需要按住Ctrl键,同时拖动...

2
苹果的官方文档没有提到这个!这个有效,谢谢! - Bill Yan
2
令人惊讶的是,这也是我正确的答案。 - astreltsov

20

我曾经遇到过同样的问题,在各处查找解决方法,但没有找到一个好的解决方案。当我的控制器首次生成时,它们具有通用名称FirstController。当我更改名称时,未更改“自定义类”区域中的值。解决方法如下:

  1. 选择View.xib
  2. 在占位符下选择File's Owner。这应该在屏幕左侧,旁边是黄色立方体。
  3. 在工具菜单中选择第三个选项(身份)。
  4. 将Custom Class类更改为正确的控制器名称。

我知道这不是针对特定问题的解决方法,但我多次点击了这个问题,所以如果有人遇到了同样的问题,这可能会有帮助。


2
这是我的具体问题。我正在使用Xamarin Studio,我重命名了一个控制器及其xib文件,但没有更新xib底层标记。我手动更新了xib文件以纠正行为。 - Nathan Taylor
1
这个救了我一大堆麻烦 - 我试图创建一个自定义的UIView类,但在执行此操作之前无法将主容器视图链接到Swift类文件。谢谢! - Alex Wulff

3
使用最新版本的Xcode时,当我打开Storyboard和.h文件时,在(新的).h文件底部@end标签下方删除最后一个空格。但出于某种原因,这样做会导致我无法放置outlet,感谢苹果公司!所以为了解决我的问题,我必须在.h文件中@end标签下方添加那个额外的空格。
这就是解决我的问题的方法,虽然它没有回答这个具体的问题,但希望能帮助到别人。

2

我曾经遇到过同样的问题,在我的情况下,身份检查器上我的类名和源代码中的类名不匹配。


1
我也遇到了这个问题。 XCode 9:确保在Storyboard -> Identity Inspector -> "Inherit from Module from Target"被选中(或手动填写模块名称)
编辑:事实证明,勾选该框并没有帮助——如果删除UIViewController的类,然后手动输入并按Enter,在XCode 9中如果有问题,复选框"Inherit Module from Target"将不会自动选中。经过试错,发现在类(Swift 4)中有一个#if IDENTIFIER .... #endif是完全有效的,但会以某种方式搞乱Storyboard连接。删除它后,输入类名在Storyboard中自动勾选了该框,现在连接正常工作。耶,又是XCode 9的一个bug。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接