初始化变量

时间:2017-01-31 02:51:30

标签: ios swift

我试图在视图控制器接管视图之前初始化视图控制器中的变量,似乎无论我如何尝试初始化它,它都不起作用并且软件运行为如果值是默认值。部分问题似乎是当我尝试设置变量的值时,包含有问题的变量的视图是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()
        }
    }
}

如果您需要更多信息,请与我们联系。再次感谢您对此事的考虑。

1 个答案:

答案 0 :(得分:0)

尚未在prepareForSegue中加载视图控制器的视图。正如@muescha在评论中建议的那样,您应该在prepareForSegue中设置属性,然后在尝试在视图中安装它们之前等待viewDidLoadviewWillAppear。我不确定为什么您尝试手动创建SessionDisplayView失败,但在任何情况下都不应该尝试在prepareForSegue中创建视图,因此解决方案是“不要这样做。 “