我有一种奇怪的经历。我创建任何类型的iPhone应用程序,添加一个带有Xib文件的UIViewController。我可以使用控件编辑xib文件,如果我运行则查看它们。现在我正在尝试向控制器添加一些IBOutlet,因此我将它们添加到.h文件中,在.m文件上进行合成。然后我转到Interface Builder连接插座。我将UILabel拖到UIView,然后我尝试连接文件所有者(我的自定义UIViewController),但是当我尝试连接到UILabel时,我可以选择的所有内容都是“查看”,这显然是错误的。所以我无法将IBOutlets连接到Interface Builder中的控件。
有什么想法吗?
答案 0 :(得分:42)
我在这个帖子中做了一些事情,我终于取得了成功。
在“界面”构建器(不是xcode)
中现在一切都恢复正常了。怪异。
希望这有助于解决问题; - )
答案 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文件中读取(就像它应该的那样),如果他们发布它,我会非常感激。
谢谢