Swift:清空UITableView单元格

4
我有一个变量用于存储我加载到UITableView中的自定义类的对象。 我给用户提供了清除所有对象的选项。当运行此选项时,我会清除存储所有玩家的数组,但如何清除TableView? 我尝试过tableView.reloadData(),但它没有做任何事情。 自定义类和全局变量:
var players: [AnyObject] = []
Class Player{
    var playerName: String?

    init(name:String){
        playerName = name
    }
}

自定义单元格的cellForRowAtIndexPath:

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

    let cell: CustomMainCell = tableView.dequeueReusableCellWithIdentifier("CustomMainCell") as CustomMainCell
    // Get Player
        let thisPlayer:Player = players[indexPath.row] as Player

        cell.nameLabel?.text = thisPlayer.playerName
    }

    return cell
}

清除设置功能:

alertController.addAction(UIAlertAction(title: "Clear Players?", style: .Default, handler: { (action: UIAlertAction!) in
            players.removeAll()
            self.tableView.reloadData()
        }))

tableView.reloadData() 的调用是否在主线程/队列上执行? - The Nomad
如果在调用时数组为空,重新加载数据应该可以正常工作。您应该展示您正在使用的代码。 - rdelmar
编辑您的问题以显示适当的代码。您是否还使用调试器逐步执行代码并确认该数组为空? - Robotic Cat
如果我在 removeAll 后 println(players),它会显示 []。 - vmitchell85
1个回答

13
在调用tableView.reloadData()之前清除数组应该可以解决问题。

我猜你的numberOfRowsInSection:cellForRowAtIndexPath:也使用了数组数据来返回正确的值/对象。

这就是问题所在。我使用了一个不同的变量来跟踪玩家数量.... 谢谢! - vmitchell85

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接