所以这是一个奇怪的问题,我甚至不确定提供什么信息。我有一个嵌入在视图控制器中的自定义视图控制器和UIview。我在连接的视图控制器中为UIView创建了一个插座。一切看起来都不错,但是当我运行我的程序时,viewcontroller和uiview正在连接,但是uiview并没有成为视图控制器的属性。 (好像它是在代码中的其他地方启动的)这会产生异常,因为当我去设置委托时,视图被视为零。这是我正在看的图片:
因此,根据我设置插座的方式,视图对象应通过calendarview属性链接到视图控制器。
以下是所请求的异常:
有关如何进一步调试此问题的任何想法将不胜感激。
答案 0 :(得分:0)
在CalendarView
之前,dayLabel
出口可能已连接并初始化。在初始化期间(我推断),它正在立即调用其委托,并遇到未初始化的dayLabel
。请记住,初始化是一个随时间发生的序列;网点不会立即初始化。
要实现的关键是,只有在viewDidLoad()
被调用的时候才能保证出口完全连接,而不是之前。因此,在该方法中使用调试打印和导致错误的方法,并首先查看哪个是真正发生的。我知道在哪里赌我的钱。
同时将didSet { print("Hey I got initialized!") }
属性观察者放在@IBOutlets
上,以监控其准确时间。这会强制启动代码告诉您它在做什么时。
我不知道你的完整UI流程;你应该把整个代码库粘贴到某个地方。但这可能是正确的:
if let dayLbl = dayLabel {
dayLbl.text = date.stringWithDateOnly()
}
而不是假设它准备就绪。