tableview重新加载数据方法被调用,但不执行

时间:2014-10-26 13:25:31

标签: ios uitableview swift

我的应用中有一个tableview,它必须显示聊天消息列表。我将聊天消息加载到NSMutableArray中,在将数据加载到数组后,我需要更新tableview。

这是我正在使用的代码:

dispatch_async(dispatch_get_main_queue(), { () -> Void in
    ("reloading data")
    self.tableView.reloadData()
})

但它打印出reloading data但不更新/重新加载tableview。

有什么想法吗?

更新

我意识到它没有调用这种方法:

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    println("running")
    let cell: UITableViewCell = UITableViewCell(style: UITableViewCellStyle.Subtitle, reuseIdentifier: "MyTestCell")
    println(listDataArray[indexPath.row])
    cell.textLabel?.text = (listDataArray[indexPath.row] as NSString)
    return cell
}

但是如果我尝试删除它,或者将其注释掉,那么它们就会说该类不符合UITableViewDataSource的协议。

那么它怎么能不调用方法呢? (NOTE: it is not printing "running" either)

更新2

这是tableview方法的代码(请注意,我在上面发布时稍微改了一下)

func tableView(tableView: UITableView!, numberOfRowsInSection section: Int) -> Int {
    if(listDataArray.count > 0) {
        return listDataArray.count
    } else {
        return 0
    }
}

func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell!  {
    var cell = tableView.dequeueReusableCellWithIdentifier("CELL") as? UITableViewCell

    if !(cell != nil) {
        cell = UITableViewCell(style: UITableViewCellStyle.Value1, reuseIdentifier: "CELL")
    }
    cell?.textLabel?.text = listDataArray[indexPath.row] as? String

    return cell
}

2 个答案:

答案 0 :(得分:0)

愚蠢的问题,但是你不忘记设置dataSource属性吗?

答案 1 :(得分:0)

如果您使用的是swift,则不应使用NSMutableArray。试试看看swift提供的方法并使用它。

例如,listDataArray应初始化为

 var listDataArray = ["TYPE OF OBJECT"] ()