我试图在视图控制器接管视图之前初始化视图控制器中的变量,似乎无论我如何尝试初始化它,它都不起作用并且软件运行为如果值是默认值。部分问题似乎是当我尝试设置变量的值时,包含有问题的变量的视图是nil。我不知道为什么会这样。任何帮助,将不胜感激。谢谢!这是我的代码:
override func setStartPosition()
{
if sessionNameIndex != nil
{
if let curSession = ShareData.sharedInstance.sessionDataObjectContainer[sessionNames[sessionNameIndex]]
{
initialValue = YesNo(rawValue: (curSession.currentValue))
if mySessionDisplay == nil
{
mySessionDisplay = SessionDisplayView(frame: self.view.frame)
if mySessionDisplay == nil
{
var shouldneverbehere = 0 //Always goes here!
}
else
{
mySessionDisplay.onView(index: 2, sessionName: sessionNames[sessionNameIndex])
mySessionDisplay.curScene.setStartPosition(newValue: val!)
}
}
}
}
}
在以下代码中调用此函数:
override func prepare(for segue: UIStoryboardSegue, sender: Any?)
{
if let destination = segue.destination as? SessionDisplayViewControllerTwo
{
if let myNames = sender as? [String]
{
destination.sessionNames = myNames
destination.sessionNameIndex = 1
destination.setStartPosition()
}
}
}
如果您需要更多信息,请与我们联系。再次感谢您对此事的考虑。
答案 0 :(得分:0)
尚未在prepareForSegue
中加载视图控制器的视图。正如@muescha在评论中建议的那样,您应该在prepareForSegue
中设置属性,然后在尝试在视图中安装它们之前等待viewDidLoad
或viewWillAppear
。我不确定为什么您尝试手动创建SessionDisplayView
失败,但在任何情况下都不应该尝试在prepareForSegue
中创建视图,因此解决方案是“不要这样做。 “