无法在Interface Builder中连接IBOutlet

我有一个奇怪的经历。 我创build任何types的iPhone应用程序,用Xib文件添加一个UIViewController。 我可以用控件编辑xib文件,如果运行,看到它们。 现在我正在试图添加一些IBOutlets到控制器,所以我将它们添加到.h文件,在.m文件中进行合成。 然后我转到Interface Builder来连接sockets。 我把UILabel拖到UIView,然后我尝试连接文件所有者(这是我自定义的UIViewController),但是当我尝试连接到UILabel时,所有可以select的是“视图”,这是明显错误的。 所以我无法将IBOutlets连接到Interface Builder中的控件。

有任何想法吗?

我在这个线程中做了一些事情的组合,我终于成功了。

在界面生成器(而不是xcode)

  1. 文件 – >重新加载所有类文件
  2. 文件 – >读取类文件(selectMyClass.h)
  3. 重新连接文件的所有者
    一个。 将类设置为“MyClass”
    湾 将视图重新连接到文件所有者的视图

现在一切都恢复正常了。 奇怪的。

希望这有助于超过它的困惑;-)

在界面生成器文件 – >读取类文件,并将其指向您的文件的所有者的类。 这为我修好了。

有同样的问题。

通过双重检查我的文件的所有者“类”属性在身份检查器修复它。

你确定文件的所有者已正确设置为您的自定义UIViewController,并已经将IBOutlet关键字添加到实例variables属性后保存您的.h文件吗?

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

你有没有确定你正在定义你的.h文件中的sockets作为适当的types? 如果您尝试连接IB中的文本字段,那么您的.h文件应该看起来像…

 IBOutlet UITextField *MyTextField; 

确保types是UITextField(或UITextView等)。 如果您键入他们作为NSString或任何不合适的,那么你不能连接他们在Interface Builder ….

如果您无法通过右键单击(或CTRL) – >下拉列表将您的UI控件连接到代码,还有另一种方法。 在界面生成器中,按住Ctrl键,将鼠标从Interface Builder主窗口中的“文件所有者”拖动到您的UI控件(标签,button等)。 将会显示您所有由Outlet定义的dpopdown列表。 只是select需要一个!

我有最相同的问题。 在类标识窗口中将我的文件所有者“types”更改为“MyClassViewController”而不是“UIViewController”修复了我的问题。 这是有道理的,因为作为文件的所有者types是UIViewController它只会显示特定于基类的属性。 将types更改为MyClassViewController可以访问它的sockets和所有inheritance的实例。 希望这可以帮助!

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

XCode -> Product -> Clean

为我工作。

我有同样的问题,我刚刚尝试diatrevolo的build议:单击文件,然后读取类文件,并指向您的文件的所有者类。

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

每次都杀死我,但有时如果你closures并重新打开Xcode,事情是固定的…只是发生在我这个确切的问题…

对我来说,问题是我创build了一个扩展UITextView和X代码将不会连接的MyUITextView。 我的解决方法是暂时使用IBOutlet中的UITextView连接/链接,然后更改为我的自定义视图。

所以我改变了。

 IBOutlet MyUITextView *tv; 

 IBOutlet UITextView *tv; 

然后连接/链接。 一旦连接,我把我的OBOutlet改回MyUITextView

 IBOutlet MyUITextView *tv; 

重新启动Xcode 5.1为我做了。

所以我不知道为什么它不会自动使IBOutlet连接,但我find了一个解决方法。 我必须通过界面生成器中的库为我的客户视图控制器手动添加sockets。 如果有人发现修复,使其自动从.h文件(如它应该)读取,我会非常感激,如果他们发布。

谢谢

我是一个新手,我也有同样的问题。 我去尝试diatrevolo的build议,并在这样做,发现是什么原因造成我的问题。 我原来在项目层次结构中随机的地方创build了ViewController,然后将它们移动到classes文件夹中。 这意味着实际的文件不在类文件夹中,但项目认为他们是,所以IB在错误的地方看。 我使用Finder将实际的文件移动到了实际的类文件中,然后在项目中删除并读取它们。 那么一切工作!

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

这只发生在模拟器上通过XCode部署应用程序。 看起来像XCode正在试图优化构build和混淆。

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

我写出来了

 @IBOutlet weak var title: UILabel! 

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