ios - 一个出口怎么可能是零,即使它已经设置了
问题描述
我有viewController
两个embedded
viewControllers
通过containers
。然后我创建了outlets
从 parentviewController's
containers
到 parent class
。我想隐藏或显示containers
取决于某些条件。
但如果我简单地写:
@IBOutlet var twoArmsContainer: UIView! {
didSet {
print("SETTING TWO ARM")
}
}
override func viewDidLoad() {
super.viewDidLoad()
twoArmsContainer.isHidden = true //container is nil
}
然后它在触发打印twoArmsContainer
后崩溃。出口如何设置,然后变成?我试过把它藏在里面,效果很好:nil
didSet
nil
didSet
@IBOutlet var twoArmsContainer: UIView! {
didSet {
print("SETTING TWO ARM")
twoArmsContainer.isHidden = true //WORKS
}
}
我还能说什么?class
我正在inherits
从另一个工作,class
所以有一个super.viewDidLoad
. 不确定这是否相关。我尝试将其outlets
放入super class
但结果相同。我还尝试删除并outlets
再次阅读。以前从未遇到过这个问题。让我知道是否应该显示更多代码;也许整个class
. 不太确定什么是相关的,因为我不知道从哪里开始。
解决方案
好的,所以我发现了问题所在;如果不访问代码就无法检测到一个问题,所以回想起来我应该同时发布父级class
和container
class
. 对于那个很抱歉。
无论如何,问题是container
viewController
从parent
viewController
. 这使我能够在两者中共享代码container
viewControllers
。
所以结构基本上是这样的:
class WizardChooseArmViewController: WizardViewController {
...
这是parent
viewController
从 base 继承的viewController
。然后container
viewControllers
看起来像这样:
final class WizardTwoArmsViewController: WizardChooseArmViewController {
...
显然containers
从它继承是一个坏主意parent
,所以我重构并将其更改为:
final class WizardTwoArmsViewController: WizardViewController {
...
不太清楚为什么它不可能containers
从inherit
它的parent
. 如果有人可以向我简要介绍,那就太好了。
推荐阅读
- parsing - ANTLR4 解析器问题
- angular - 带有选项卡的 mat-dialog 不能以角度工作
- version-control - Clearcase 中经常修改的文件
- css - 在 reactJS 中悬停时更改父组件背景
- docker - 如何在同一个 docker 容器中执行多个 python 脚本?
- python - 如何在 sqlalchemy 中按“列中的文字”过滤
- d3.js - 如何根据德语区域设置时间轴标签(刻度)
- django - 如何在Django中的同一模型属性下存储多个文件?
- python - 为什么我的代码在复制文件扩展名时不起作用
- amazon-web-services - 如何在骆驼的休息组件中执行from语句?