【问题标题】:IBOutlet UIViews are null?IBOutlet UIViews 为空?
【发布时间】:2012-05-15 08:57:27
【问题描述】:

我有一个名为ActorController 的类,它有一个NIB 文件。我在ActorController.h 中创建了IBOutlets,它与NIB 文件中的各种UIViews 和UIImageViews 相匹配。但是,这些视图从未像应有的那样显示在屏幕上。经过进一步调查,我发现如果我使用NSLog 将 UIView 对象打印到控制台,它会打印null。有人可以建议我可能做错了什么吗?任何帮助表示赞赏。

【问题讨论】:

  • 可能你忘了绑定所有的 IBOutlets 吗?
  • 它们是否正确绑定?要检查它们是否存在,请查看 ActorController.h 中插座 @property 行左侧的圆圈。如果有空圈,请转到 Interface Builder 进行更正。
  • 您是否在 init 方法中打印它们?因为 IB 对象直到 awakeFromNib 才会被初始化
  • IBOutlets 已正确绑定,我将它们打印在一个名为 setup 的方法中,该方法在 awakeFromNib 之后调用(我认为。)这值得仔细检查。编辑:确实,它是在awakeFromNib 之后调用的。

标签: objective-c uiview uiimageview nib iboutlet


【解决方案1】:

一些需要寻找的东西:

  • 笔尖根本没有加载:
    • 名字错误
    • nib 文件未包含在项目中
    • 大小写问题(iOS 在设备上区分大小写)
  • 插座未连接(但视图仍应显示在屏幕上)
  • 插座已连接,但连接到错误的对象
  • 视图控制器已正确创建和初始化,但未显示
  • 活动视图控制器不是您从笔尖初始化的控制器

【讨论】:

  • NIB 肯定正在加载并且插座已连接。根视图控制器是 ViewController,ActorController 是否必须与它有直接关系?
  • 您创建的 ActorController 实例必须以某种方式成为活动视图控制器。也许您将它推送到导航堆栈(如果您使用的是导航控制器),或者您将其设置为窗口的根视图控制器等。仅仅 拥有 ActorController 的实例并不意味着它' 将被显示,但你必须做到这一点。
猜你喜欢
  • 2013-11-05
  • 1970-01-01
  • 1970-01-01
  • 2017-06-08
  • 1970-01-01
  • 1970-01-01
  • 2014-06-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多