在 Swift 2.0 中将图像添加到 UITableView

Posted

技术标签:

【中文标题】在 Swift 2.0 中将图像添加到 UITableView【英文标题】:Adding Image to UITableView in Swift 2.0 【发布时间】:2015-11-10 20:39:19 【问题描述】:

我有一个带有自定义原型单元的UITableView,它是超类UITableView 的子类。我正在尝试使用NSMutableArray 将多张照片添加到表格中:

这是我的代码:

let cell = self.tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as! PillarTableViewCell



cell.titleLabel.text = self.objects.objectAtIndex(row) as? String

        cell.pillarIcon.image = self.imageObjects.objectAtIndex(row) as? UIImage

生成的每一行都有一个label 和一个imageIcon。我从来没有向UITableView 添加图像,上面的代码和我来的一样接近。我收到的错误是

由于未捕获的异常“NSRangeException”而终止应用程序,原因:“*** -[__NSArrayM objectAtIndex:]: index 1 beyond bounds [0 .. 0]”

这个错误让我认为它不会根据我编写的代码将事情放在一行中。它是否正确?

我该如何解决这个问题。 谢谢。

根据要求,这里是numberOfRowsInSection 部分:

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int 

        return objects.count + staticObjects.count
    

【问题讨论】:

ok..请检查您是否在“cellForRowAtIndexPath”和“numberOfRowsInSections”中传递了相同的数组。似乎数组在索引处没有值,当您传递不同的数组时会发生这种情况。 所以,IDK 你在哪一行崩溃,但是当你尝试访问它时,错误告诉你 self.objects 或 self.imageObjects 中的东西少于 2 个。如果你在一个不存在的索引处向一个数组请求一个对象,它会崩溃。 为什么是row 而不是indexPath.row 你能把 numberOfRowsInSections 的代码也贴出来吗? @dpstart 很抱歉长时间的延迟有一些事情需要处理。 row 而不是 indexPath.row 的原因是我有两个原型单元。一个只有一个对象,第二个有多个可以增加或减少的对象。所以我必须做数学并创建一个变量来保存index 【参考方案1】:

我认为您的问题是您的UITableView 中的部分数高于您的对象数组中的索引数。 尝试在 numberOfRowsInSection 函数中添加条件子句。

     var row = Int;
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int 
            var count = 0;
            if (row == 0) //UITableView index starts at 0
           count = staticObjects.count
           
            else
           count = objects.count    
            
      return count;      

        func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell 
           let row = indexPath.row;
    let cell = self.tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as! PillarTableViewCell
    cell.titleLabel.text = self.objects[indexPath.row] // or use row doesn't matter
   cell.pillarIcon.image = self.imageObjects.objectAtIndex(row) as? UIImage
   return cell;

【讨论】:

以上是关于在 Swift 2.0 中将图像添加到 UITableView的主要内容,如果未能解决你的问题,请参考以下文章

使用 Swift 在 SpriteKit 中将自定义“数字”图像作为分数添加到 SKLabelNode

如何在swift ios中将多个图像添加到自定义表格视图单元格?

在 .NET 2.0 中将位图转换为一个多页 TIFF 图像

如何在 swift 3 中将 MKPolylines 添加到 MKSnapShotter?

如何在 swift 2.0 中将 .pdf 文件转换为 base64 字符串?

在 Swift 2.0 中从 iOS 应用程序上传图像到服务器