所以我对iOS编程很新(但已经习惯了足以实现Firebase)而且我本质上是用视图控制器创建一个应用程序:VC Screenshot
我有一个来自中间屏幕上的事件按钮的segue到最后一个,当我在模拟器中尝试它时,它有效。但是,在第三个屏幕上,我的应用程序(或者更确切地说,VC)从Firebase数据库中获取数据,如下所示:
let ref = FIRDatabase.database().reference().child("events")
ref.observeSingleEvent(of: .value, with: { snapshot in
for rest in snapshot.children.allObjects as! [FIRDataSnapshot] {
if rest.key != "upcoming" {
self.data.append(EventData(eventName: rest.childSnapshot(forPath: "name").value as! String, eventDate: rest.childSnapshot(forPath: "date").value as! String, eventInfo: rest.childSnapshot(forPath: "desc").value as! String, eventKey: rest.key, eventUECode: rest.childSnapshot(forPath: "ue_code").value as! String))
print(rest.childSnapshot(forPath: "name"))
}
}
super.loadView()
})
在模拟器中单击事件时,我看到应用程序转换到第三个屏幕并查看上述拉动产生的内容,但转换完成后内容消失。然后,如果我回去,我的第二个屏幕显示为空白,再次单击“事件”会导致标题中提到的异常被抛出。
我试图在segue上禁用动画并且它可以正常工作,但我无法弄清楚导致动画错误的原因,以及如何修复它?
编辑我忘了提及,代码正在loadView()函数中运行,因为我正在填充UITableView。
答案 0 :(得分:1)
删除行:template: "<img src='dist/myimg.png' />"
此方法的文档说明,&#34;您不应该直接调用此方法&#34;。它将在需要时由API内部调用(例如,第一次调用super.loadView()
)。 doco还说如果你覆盖self.view
,&#34;你对这种方法的自定义实现不应该调用super。&#34;请参阅:https://developer.apple.com/reference/uikit/uiviewcontroller/1621454-loadview
你有什么理由试图直接打电话吗?如果您确实需要在某个时间调用它,而不是通常自动调用它,您可以调用loadView
。这应该导致对self.view
的正确内部调用。