在 Swift 中使用数组创建 TableView

Posted

技术标签:

【中文标题】在 Swift 中使用数组创建 TableView【英文标题】:Creating TableViews in Swift with an Array 【发布时间】:2015-06-18 13:25:28 【问题描述】:

我正在尝试使用一次 Rest 调用的结果作为我的 TableView 的输入。 我有一个名为 GamesList[String] 的数组,它是在 viewDidLoad() 函数中合成的。这是 viewDidLoad() 函数:

override func viewDidLoad() 
    super.viewDidLoad()

    getState()  (json, error) -> Void in
        if let er = error 
            println("\(er)")
         else 
            var json = JSON(json!);
            print(json);

            let count: Int = json["games"].array!.count
            println("found \(count) challenges")

            for index in 0...count-1
                println(index);
                self.GamesList.append(json["games"][index]["game_guid"].string!);
            
        
    

问题是填充 TableView 的函数在我的 GamesList 数组被填充之前执行。这些是填充 TableView 的函数:

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int 
    return GamesList.count


func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell 
    var cell = tableView.dequeueReusableCellWithIdentifier("Game", forIndexPath: indexPath) as! UITableViewCell
    cell.textLabel?.text = GamesList[indexPath.row]
    cell.detailTextLabel?.text = GamesList[indexPath.row]
    return cell

如何在我的数组被填满后强制表格被填满(刷新)?

【问题讨论】:

【参考方案1】:

在附加值后使用self.tableView.reloadData()

 getState()  (json, error) -> Void in
        if let er = error 
            println("\(er)")
         else 
            var json = JSON(json!);
            print(json);

            let count: Int = json["games"].array!.count
            println("found \(count) challenges")

            for index in 0...count-1
                println(index);
                self.GamesList.append(json["games"][index]["game_guid"].string!);
            
            dispatch_async(dispatch_get_main_queue()) 
                self.tableView.reloadData()
            
        
    

【讨论】:

感谢您的回答,但它没有编译。它告诉我它“不能在没有参数的情况下调用'reloadData''我应该传递什么参数? 你的 tableView 实例名称是什么? 我通过 Storyboard 模式创建了 TableView。它连接到插座:数据源。编辑后我收到错误消息:'Cannot invoke 'dispatch_async' with an argument list of type '(dispatch_queue_tl, ()->_)'

以上是关于在 Swift 中使用数组创建 TableView的主要内容,如果未能解决你的问题,请参考以下文章

在 Swift 中的数组中使用多个部分和多个字典填充 TableView

我如何使用解码器在swift 4中解析tableview中的json数组

无法过滤使用字典数组创建的tableview

在 iOS Swift 中没有正确加载 Tableview 数组?

使用数组中的新信息更新该对象并显示 tableview Swift

如何在 Swift 的 TableView 中使用页脚在部分下上传标签?