无法在Interface Builder中连接IBOutlet

时间:2009-11-17 02:47:52

标签: ios iphone interface-builder

我有一种奇怪的经历。我创建任何类型的iPhone应用程序,添加一个带有Xib文件的UIViewController。我可以使用控件编辑xib文件,如果我运行则查看它们。现在我正在尝试向控制器添加一些IBOutlet,因此我将它们添加到.h文件中,在.m文件上进行合成。然后我转到Interface Builder连接插座。我将UILabel拖到UIView,然后我尝试连接文件所有者(我的自定义UIViewController),但是当我尝试连接到UILabel时,我可以选择的所有内容都是“查看”,这显然是错误的。所以我无法将IBOutlets连接到Interface Builder中的控件。

有什么想法吗?

19 个答案:

答案 0 :(得分:42)

我在这个帖子中做了一些事情,我终于取得了成功。

在“界面”构建器(不是xcode)

  1. 文件 - >重新加载所有类文件
  2. 文件 - >读取类文件(选择MyClass.h)
  3. 通过
    重新连接文件所有者 一个。将类设置为“MyClass”
    湾将视图重新连接到文件所有者的视图
  4. 现在一切都恢复正常了。怪异。

    希望这有助于解决问题; - )

答案 1 :(得分:6)

在Interface Builder文件中 - >读取类文件,并将其指向文件所有者的类。这为我解决了。

答案 2 :(得分:6)

有同样的问题。

通过在Identity检查器上仔细检查我的文件所有者“类”属性来修复它。

答案 3 :(得分:4)

在将.h关键字添加到实例变量后,您确定文件所有者是否已正确设置为自定义UIViewController并且已保存您的IBOutlet文件属性?

答案 4 :(得分:3)

我遇到了和你一样的问题。我不知道你是否解决了你的问题,但我的是我更改了所有类的名称,包括viewcontroller,但文件的所有者名称保持不变。   所以,我双击了文件的所有者 - >在打开的窗口中单击i - >将类字段中的名称更改为新的viewcontroller名称。然后它奏效了。   也许你想再试一次,看它是否有效。   祝你好运。

答案 5 :(得分:3)

您确定要将.h文件中的商店定义为合适的类型吗?如果您尝试连接IB中的文本字段,那么您的.h文件应该类似于......

IBOutlet UITextField    *MyTextField;

确保类型是UITextField(或UITextView等)。如果您将它们键入为NSString或其他任何不合适的内容,则无法在Interface Builder中将它们连接起来....

答案 6 :(得分:3)

如果您未能通过右键单击(或CTRL)将UI控件连接到代码 - >下拉列表,还有另一种方式。在界面构建器中,按&将CTRL,药物鼠标从Interface Builder的主窗口中的“文件所有者”保存到您的UI控件(标签,按钮等)。将显示由您的Outlets定义的所有dpopdown列表。只需选择一个!

答案 7 :(得分:3)

我对LONGEST也有同样的问题。在类标识窗口中将我的文件所有者“类型”更改为“MyClassViewController”而不是“UIViewController”修复了我的问题。这是有道理的,因为File的所有者类型是UIViewController,它只会显示特定于基类的那些属性。将类型更改为MyClassViewController可以访问它的出口和所有继承的实例。希望这有帮助!

答案 8 :(得分:2)

XCode -> Product -> Clean

为我工作。

答案 9 :(得分:2)

File->Read Class Files (select MyClass.h)为我做了这份工作。

答案 10 :(得分:1)

我遇到了同样的问题,我只是尝试了diatrevolo的建议:单击File,然后读取类文件,并指向文件的所有者类。

这为我修好了。我会+1 diatrevolo,但我还没有任何声誉......

答案 11 :(得分:1)

重新启动Xcode 5.1为我做了。

答案 12 :(得分:1)

每次都会杀了我,但有时如果你关闭并重新打开xcode,事情就会得到解决......刚发生在这个确切的问题上......

答案 13 :(得分:1)

对我来说,问题是我创建了MyUITextView扩展UITextView而X-Code无法连接。 我的解决方法是暂时使用IBOutlet中的UITextView来连接/链接,然后更改为我的自定义视图。

所以我改变了。

IBOutlet MyUITextView *tv;

IBOutlet UITextView *tv;

然后连接/链接。 连接后,我将OBOutlet更改回MyUITextView

IBOutlet MyUITextView *tv;

答案 14 :(得分:0)

我写了

@IBOutlet weak var title: UILabel!
在UIViewController文本文件中的

然后从文件连接到故事板中的标签,它工作正常!

答案 15 :(得分:0)

我在这里也遇到了麻烦,最终为我工作的是在打开Interface Builder之前构建应用程序。伏都!

答案 16 :(得分:0)

在我本地化了一些XIB文件后,视图没有对Interface Builder中的任何更新做出反应。简单的解决方案是从模拟器/设备中删除应用程序。下一个Build& Run正确更新了应用程序。

这只发生在模拟器上通过XCode部署应用程序时。似乎XCode正在尝试优化构建并使其混淆。

答案 17 :(得分:0)

我是个新手,我遇到了同样的问题。我去尝试了diatrevolo的建议,并且在这样做时,发现了导致我问题的原因。我最初在项目层次结构中随机创建了ViewController,然后将它们移动到classes文件夹中。这意味着实际文件不在classes文件夹中,但项目认为它们是,所以IB看错了地方。我使用Finder将实际文件移动到实际的类文件中,然后删除并在项目中读取它们。一切顺利!

答案 18 :(得分:0)

所以我不知道为什么它不能自动建立IBOutlet连接,但我找到了一种解决方法。我不得不通过Interface Builder中的库为我的客户视图控制器手动添加插座。如果有人发现修复程序让它自动从.h文件中读取(就像它应该的那样),如果他们发布它,我会非常感激。

谢谢