我试图在 View Controller 接管 View 之前初始化 View Controller 中的变量,似乎无论我如何尝试初始化它,它都不起作用,并且软件运行时就好像该值是默认值。部分问题似乎是当我尝试设置变量的值时,包含相关变量的 View 为零。我不知道这是为什么。任何帮助,将不胜感激。谢谢!这是我的代码:
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()
}
}
}
如果您需要更多信息,请告诉我。再次感谢您对此事的考虑。
最佳答案
View Controller 的 View 尚未加载到 prepareForSegue
中。正如 @muescha 在他的评论中建议的那样,您应该在 prepareForSegue
中设置属性,然后等待 viewDidLoad
或 viewWillAppear
,然后再尝试将它们安装在你的意见。我不确定为什么您尝试手动创建 SessionDisplayView
失败,但无论如何您都不应该尝试在 prepareForSegue
中创建 View ,因此解决方案是“不要这样做。”
关于ios - 初始化变量时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41948928/