无法在Interface Builder中连接IBOutlet
我有一个奇怪的经历。 我创build任何types的iPhone应用程序,用Xib文件添加一个UIViewController。 我可以用控件编辑xib文件,如果运行,看到它们。 现在我正在试图添加一些IBOutlets到控制器,所以我将它们添加到.h文件,在.m文件中进行合成。 然后我转到Interface Builder来连接sockets。 我把UILabel拖到UIView,然后我尝试连接文件所有者(这是我自定义的UIViewController),但是当我尝试连接到UILabel时,所有可以select的是“视图”,这是明显错误的。 所以我无法将IBOutlets连接到Interface Builder中的控件。
有任何想法吗?
我在这个线程中做了一些事情的组合,我终于成功了。
在界面生成器(而不是xcode)
- 文件 – >重新加载所有类文件
- 文件 – >读取类文件(selectMyClass.h)
- 重新连接文件的所有者
一个。 将类设置为“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文本文件,然后从文件连接到故事板中的标签,它的工作!