UIViewController偶尔黑色

时间:2016-02-12 15:26:51

标签: ios swift uitableview uiviewcontroller

我有一个带有ContainerView(连接到空白UIView)的UIViewController和一个表。有时它会正确显示(我在viewDidLoad中加载JSON数据),但有时候整个视图都是黑色的。我试图将其指向某个布局更改,因此我撤消了更改(再次正确显示视图),然后完全像之前一样重新更改了更改(视图仍然正确显示)。

视图为黑色时没有崩溃或任何错误消息。该程序似乎仍然在后台运行,我可以使用TabBar切换到其他部分。

代码中唯一出现问题的迹象是,

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
永远不会打电话给

。但是如果TableView失败,为什么整个ViewController都没有显示?

编辑:viewdidload的代码。

    let tURL = NSURL(string: "<urlofjsonfile>")
    var JSONData:NSData? = nil
    do {
        JSONData = try NSData(contentsOfURL: tURL!, options: [])
    } catch {
        print("\(error)")
    }
    if let json = (try? NSJSONSerialization.JSONObjectWithData(JSONData!, options: [])) as? NSDictionary {
        if let serienstartJsonArray = json["sendungen"] as? [NSDictionary] {
            for item in serienstartJsonArray {
                let meldung=SerienDataModel(json: item)
                seriendaten.append(meldung)
            }
            arrSectionStart.append(0)
            if let id = json["anzahl1"] as? Int {
                arrSectionRows.append(id+1)
            } else {
                arrSectionRows.append(0)
            }
            if let numb2 = json["anzahl2"] as? Int {
                arrSectionStart.append(arrSectionRows[0]+1)
                arrSectionRows.append(numb2)
            } else {
                arrSectionRows.append(0)
                arrSectionStart.append(1)
            }
            arrSectionStart.append(arrSectionRows[0]+arrSectionRows[1]+3)
            if let numb3 = json["anzahl3"] as? Int {
                arrSectionRows.append(numb3)
            } else {
                arrSectionRows.append(0)
            }

        } else {
            print("Error creating dictionary")
        }
    } else {
        print("Error NSJSONSerialization")
    }

1 个答案:

答案 0 :(得分:0)

您在viewDidLoad

中同步联网
JSONData = try NSData(contentsOfURL: tURL!, options: [])

永远不要永远不要那样做。除了在后台线程上,不要同步网络。正确(异步)网络,然后在主线程上更新模型和接口。