【问题标题】:IBOutlet is nil, but it is connected in storyboard, SwiftIBOutlet 为 nil,但它在情节提要、Swift 中连接
【发布时间】:2015-06-02 00:04:21
【问题描述】:

使用 Swift 1.1 和 Xcode 6.2。

我有一个 UIStoryboard,其中包含一个单独的自定义 UIViewController 子类。在它上面,我有一个类型为UIView@IBOutlet 连接,从该控制器到情节提要上的UIView 子类。对于该视图的子视图,我也有类似的出口。见图A。

但在运行时,这些属性为零(图 B)。尽管我已经确定我已经在 Interface Builder 中连接了插座。

想法

  • 是否有可能因为我正在使用子类的子类而导致初始化混乱?我没有覆盖任何初始化程序
  • awakeFromNib: 由于某种原因没有被调用
  • 也许它没有连接到子视图上的子视图

我尝试过的事情:

  • 完全匹配 @IBOutlet 和情节提要项目类型(而不是 UIView
  • 删除属性和插座并重新添加它们

图A*

图B

*Figure A中的隐藏代码是:

@IBOutlet private var annotationOptionsView: UIView!
@IBOutlet private var arrivingLeavingSwitch: UISegmentedControl!

谢谢。

【问题讨论】:

  • 为什么不改!到?
  • clearView 是 nil 因为没有链接到情节提要(见代码左边的圆圈有一个洞,表示没有链接),在截图中我看不到声明annotationOptionView.
  • @JavierFloresFont: clearView 我希望是零。这是我还没有重构的东西。另请参阅图 A 的脚注。@ShaanSingh 应该是!因为来自情节提要的连接(应该)在运行时设置,不应为零。
  • 这个视图控制器是如何加载的?向我们展示请求它的代码,或描述连接到它的 segue。
  • 它得到了正确的故事板:let vc = UIStoryboard(name: "LocationPickerModal", bundle: nil) .instantiateViewControllerWithIdentifier("LocationPickerModalViewController") as LocationPickerModalViewController

标签: xcode swift uistoryboard null iboutlet


【解决方案1】:

如果您有两个故事板/xib,一个用于继承层次结构中的每个“类级别”,则必须在每个中定义出口,并在需要对其进行操作的任何类中引用。在我的例子中,它是父类。

【讨论】:

    猜你喜欢
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    • 2017-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    相关资源
    最近更新 更多