iOS Swift w / Firebase集成 - 由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'无法将self添加为子视图'

时间:2017-02-27 05:07:54

标签: ios swift xcode firebase

所以我对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。

1 个答案:

答案 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的正确内部调用。