Swift:在表格视图中显示 UIImage 数组中的图像

Posted

技术标签:

【中文标题】Swift:在表格视图中显示 UIImage 数组中的图像【英文标题】:Swift: Display image from UIImage array in table view 【发布时间】:2015-06-09 05:13:05 【问题描述】:

我从异步请求中获取图像并将它们添加到[UIImage](),以便我可以使用数组中的图像填充我的UITableView 图像。问题是,当调用它时,我在cellForRowAtIndexPath 函数中不断收到Fatal error: Array index out of range,我怀疑这可能是因为我正在进行异步调用?为什么我不能将数组中的图像添加到表格视图行?

   var recommendedImages = [UIImage]()

        var jsonLoaded:Bool = false 
            didSet 
                if jsonLoaded 

                    // Reload tableView on main thread
                    dispatch_async(dispatch_get_global_queue(Int(QOS_CLASS_USER_INITIATED.value), 0))  // 1
                        dispatch_async(dispatch_get_main_queue())  // 2
                            self.tableView.reloadData() // 3
                        
                    

                
            
        

    override func viewDidLoad() 
            super.viewDidLoad()

           // ...

          let imageURL = NSURL(string: "\(thumbnail)")

          let imageURLRequest = NSURLRequest(URL: imageURL!)

          NSURLConnection.sendAsynchronousRequest(imageURLRequest, queue: NSOperationQueue.mainQueue(), completionHandler:  response, data, error in

          if error != nil 

              println("There was an error")

          else 

              let image = UIImage(data: data)

              self.recommendedImages.append(image!)

              self.jsonLoaded = true

         

        )

    

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

        var songCell = tableView.dequeueReusableCellWithIdentifier("songCell", forIndexPath: indexPath) as! RecommendationCell

        songCell.recommendationThumbnail.image = recommendedImages[indexPath.row]


        return songCell
    

编辑:我的numberOfRowsInSection 方法。 recommendedTitles 来自我排除的同一块代码。永远是 6。

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

【问题讨论】:

可以发numberOfRowsInSection的方法吗? 【参考方案1】:

您的错误是您在numberOfRowsInSection 中返回 6,因此 tableview 知道您有 6 个单元格

但是,当执行cellForRowAtIndexPath时,你的图像数组是空的,所以它崩溃了。

试试这个

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

也切换到主队列,这就够了

 dispatch_async(dispatch_get_main_queue(),  () -> Void in
       self.tableView.reloadData()
    )

【讨论】:

以上是关于Swift:在表格视图中显示 UIImage 数组中的图像的主要内容,如果未能解决你的问题,请参考以下文章

如何在 swift 3 中的表格视图中显示数据?

在表格视图的 swift 文件之间快速传递数组

在 Swift 中使用自定义类在数组中显示 UIImage

Swift:数组、文本字段和 UITableView

Swift 5. 从第二个表格视图单元格(第二个 indexpath.row )显示数组

图像无法在表格视图中显示