【问题标题】:Interface Builder is allocating a custom view as a regular UIViewInterface Builder 将自定义视图分配为常规 UIView
【发布时间】:2014-10-20 09:02:58
【问题描述】:

编辑#3:我在运行 10 次时不知何故错过了第二条控制台消息,这让我对此感到困惑。这是一个已解决的已知问题。我需要将“-all_load -ObjC”设置为链接器标志,但我不知道为什么它不是那样。见"Unknown class <MyClass> in Interface Builder file" error at runtime

我正在尝试在我的故事板中使用FBLoginView(Facebook SDK 框架的一部分),UIView 的子类,并在视图控制器的 viewDidLoad 中为其超级视图设置一个属性。 这就是我所拥有的:

如您所见,显示的 UIView(灰色框)的类设置为 FBLoginView。它链接到我右侧视图控制器.m 中的属性loginView

viewDidLoad 中,它执行_loginView.readPermissions = @[@"user_friends"],导致程序崩溃。编辑#2:日志说:

App became active.
Unknown class FBLoginView in Interface Builder file.
-[UIView setReadPermissions:]: unrecognized selector sent to instance 0x10c120b90

我设置了一个断点,loginViewUIView,而不是 FBLoginView。这没有意义;我已经在 Interface Builder 中将其更改为 FBLoginView。我该如何解决这个问题?

编辑:这是 IB 中视图控制器的连接检查器:

【问题讨论】:

  • 听起来很奇怪,你的 FBLoginView 有 IBOutlet 吗?
  • 你已经证明你有一个FBLoginView。现在在情节提要中选择视图控制器,按 Command-Option-6 显示连接检查器,然后发布该检查器的屏幕截图。另外,调试控制台中还有其他消息吗?
  • @Injectios 是的,它在右侧的 .m 中。抱歉,上传者缩小了我的屏幕截图,使其更难看到。
  • @robmayoff 我已经编辑了我的问题以包含屏幕截图。我不知道为什么它说它连接到登录视图......我没有在我的项目中命名任何东西。是的,控制台中有另一条消息,我不知何故没有看到,或者以前不存在。 “Interface Builder 文件中的未知类 FBLoginView。”

标签: ios objective-c interface-builder


【解决方案1】:

一些尝试:

  • 使用不同的名称复制您的 FBLoginView 类并尝试。
  • 仔细检查 FBLoginView 类名的拼写 - 检查 .m 和 .h 的文件名,然后检查实际文件中的接口/实现以确保其大小写正确。

【讨论】:

  • 这绝对是正确的拼写,甚至当我在另一个项目中以类似的方式执行此操作时(除了没有故事板)它也有效。 FBLoginView.h 是 FacebookSDK.framework 的一部分。
【解决方案2】:

确保 FBLoginView.m 被声明为您当前的构建目标成员(例如编译源)。 为此,请在 Project Navigator 中选择 FBLoginView.m,请参阅文件检查器中的“Target Membership”部分作为附加屏幕截图(已删除)。

编辑:

您应该阅读the documentation :)
请参阅“添加登录 UI 控件”部分的底部。

您必须在- application:didFinishLaunchingWithOptions: AppDelegate 方法中添加[FBLoginView class] 或将-ObjC 标志添加到您的链接器选项中。

【讨论】:

  • 谢谢。我在任何地方都没有 FBLoginView.m,因为我刚刚从 FacebookSDK.framework 导入它,其中包含标头和编译的库,但我检查了,该框架确实具有正确的目标成员资格。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-02-22
  • 1970-01-01
  • 1970-01-01
  • 2013-08-09
  • 1970-01-01
  • 2010-10-04
  • 2012-02-15
相关资源
最近更新 更多