Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 为什么swift uiview不能连接到视图控制器?_Ios_Swift_Uiview_Uiviewcontroller_Iboutlet - Fatal编程技术网

Ios 为什么swift uiview不能连接到视图控制器?

Ios 为什么swift uiview不能连接到视图控制器?,ios,swift,uiview,uiviewcontroller,iboutlet,Ios,Swift,Uiview,Uiviewcontroller,Iboutlet,所以这是一个有点奇怪的问题,我甚至不知道该提供什么信息。我有一个自定义视图控制器和嵌入在视图控制器中的UIview。我在连接的视图控制器中为UIView创建了一个插座。一切看起来都很好,但当我运行程序时,viewcontroller和uiview正在连接,但uiview并没有成为view控制器的属性。(好像它是在代码中的其他地方启动的)这会创建一个异常,因为当我去设置委托时,视图被视为nil。下面是我所看到的图片: 因此,根据我设置插座的方式,视图对象应该通过calendarview属性链接到

所以这是一个有点奇怪的问题,我甚至不知道该提供什么信息。我有一个自定义视图控制器和嵌入在视图控制器中的UIview。我在连接的视图控制器中为UIView创建了一个插座。一切看起来都很好,但当我运行程序时,viewcontroller和uiview正在连接,但uiview并没有成为view控制器的属性。(好像它是在代码中的其他地方启动的)这会创建一个异常,因为当我去设置委托时,视图被视为nil。下面是我所看到的图片:

因此,根据我设置插座的方式,视图对象应该通过calendarview属性链接到视图控制器

以下是请求的异常情况:


对于如何进一步调试此问题的任何想法,我都将不胜感激。

很可能是
CalendarView
插座在
dayLabel
之前已连接并初始化。在初始化过程中,(我推断)它会立即调用其委托,并遇到未初始化的
dayLabel
。记住,初始化是一个随时间发生的序列;这些出口不会同时初始化

要认识到的关键是,只有在调用
viewDidLoad()
时,才能保证插座完全连接,而不是在调用之前。因此,在该方法和导致错误的方法中放置调试打印,然后查看哪一个是真正首先发生的。我知道在哪里下注

还可以在您的
@IBOutlets
上放置
didSet{print(“嘿,我初始化了!”)}
属性观察器,以监控该操作的精确时间。这将强制启动代码在启动时告诉您它在做什么

我不知道你的整个UI流程;您应该将整个代码库粘贴到某个地方。但这样做可能是正确的:

if let dayLbl = dayLabel {
    dayLbl.text = date.stringWithDateOnly()
}

而不是假设它已经准备好了。

这已经发生在我身上好几次了。执行干净的构建并删除派生数据目录通常会有所帮助。在调用崩溃函数的地方,代码看起来是什么样的?具体来说,它是如何获得对ViewController的引用的?这与第一张图片中的代码相同。第二张图片只是相同代码的一张较小的图片。这有意义吗?没有。我问的是什么调用了你发布的函数。没有针对该函数的特定调用。我相信它是通过视图控制器类从进程中调用的。我对雨燕还是很陌生,如果这不合理,我原谅我。