表格视图不显示单元格中的内容

Posted

技术标签:

【中文标题】表格视图不显示单元格中的内容【英文标题】:table view not displaying contents in the cells 【发布时间】:2016-03-18 06:19:20 【问题描述】:

我正在尝试使用 alamofire 和 swifty json 从堆栈交换 api 获取一些数据。我可以在日志中打印所需的数据,但是当我运行应用程序时,模拟器只显示空单元格。我检查了标识符,并将原型单元格值设置为 1。`

class MainTableViewController: UITableViewController,UISearchResultsUpdating 


    var searchKeyword: String = "questions"

    // empty array to store the search results
    var searchResults: [SearchResult] = []

func alamofireFunction() 
  Alamofire.request(.GET, "https://api.stackexchange.com/2.2/questions?=%20\(searchKeyword)%20viewpage=1&fromdate=1183075200&todate=2554416000&order=asc&sort=activity&tagged=ios&site=***").responseJSON  (response) -> Void in

            switch response.result 

            case .Success:
                if let value = response.result.value 
                    let json = JSON(value)
                    for (var idx=0; idx<=json["items"].count; idx++) 
                        let result = SearchResult()
                        //print(json["items"][idx]["title"].stringValue)
                        result.name = json["items"][idx]["owner"]["display_name"].stringValue
                        result.question = json["items"][idx]["title"].stringValue
                        result.image = json["items"][idx]["owner"]["profile_image"].stringValue
                        self.searchResults.append(result)     
                                       
                

            case .Failure:
                print("error")



            
        


    


    override func viewDidLoad() 
        super.viewDidLoad()


        alamofireFunction()

 
         override func didReceiveMemoryWarning() 
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
       
    // MARK: - Table view data source
    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell 
        let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! MainTableViewCell


        cell.questionLabel.text = searchResults[indexPath.row].question
      cell.nameLabel.text = searchResults[indexPath.row].name


        return cell
    



        override func numberOfSectionsInTableView(tableView: UITableView) -> Int 
            // #warning Incomplete implementation, return the number of sections
            return 1
        

        override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int 
            // #warning Incomplete implementation, return the number of rows
            return searchResults.count

    `

【问题讨论】:

你是否将委托和数据源设置为tableview?如果是,则比获取数据重新加载 tableview 后 非常感谢,重新加载表格视图完成了这项工作 【参考方案1】:

当您的数据源更改时,您必须调用 self.reloadData()。这将导致 tableView 调用 dataSource 方法。

【讨论】:

【参考方案2】:

这是因为你使用的是来自Url的请求,这个过程是在一个线程上执行的,所以当你这样取数据的时候,你必须调用tableView.reloadData()让数据源知道这个过程已经完成了

【讨论】:

以上是关于表格视图不显示单元格中的内容的主要内容,如果未能解决你的问题,请参考以下文章

表格视图单元格中的图像对齐不正确

核心数据:如何显示 fetchrequest 的结果以计算表格视图单元格中的值

如何让excel单元格中的内容全部显示出来

如何在右侧的表格视图单元格中显示徽章计数

在 ios 的表格视图单元格中显示图像

如何在 ipad 中的 tableview 单元格上显示弹出框单击