在 UITableView 中加载图像时遇到问题

Posted

技术标签:

【中文标题】在 UITableView 中加载图像时遇到问题【英文标题】:Trouble Loading Images in UITableView 【发布时间】:2015-11-15 23:19:02 【问题描述】:

我正在尝试将图像放入我的UITableView。该表设置有自定义子类单元格。在子类中我有网点:

@IBOutlet var titleLabel: UILabel!

`@IBOutlet var pillarIcon: UIImageView!`

在超类中,我为两者创建了一个NSMutableArray

var objects: NSMutableArray! = NSMutableArray()

var imageObjects: NSMutableArray! = NSMutableArray()

我将东西放入viewDidLoad 方法中的数组中每个数组有 4 个项目。

所以当我调用项目时:

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

    return self.objects.count


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

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

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

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


    return cell



cell.titleLabel.text 项目出现,但 cell.pillarIcon.image 中的图像没有出现在表格中。

我已经为此工作了几个小时,感觉就像在兜圈子。图像文件也已加载到主文件中,所以这不是问题。

提前致谢。

【问题讨论】:

您是否尝试过更具体的数组类型?试试: var objects = [UIImage]() var imageObjects = [String]() 如何在imageObjects 属性中加载图像值? @whyceewhite 我正在像这样加载图像:self.imageObjects.addObject("book.jpg")self.imageObjects.addObject("bookmark.png") 检查 self.imageObjects.objectAtIndex(indexPath.row) as? UIImage 是否返回 nil。如果不是,则问题出在您的自定义表格单元格上。 你可以试试 cell.pillarIcon.image = UIImage(named: "Demo.png").构象。 【参考方案1】:

确保您的图片已加载到您的Images.xcassets,然后使用UIImage(name:) 方法加载图片。


目前,您正在将图像加载到 imageObjects 数组中,如下所示:

self.imageObjects.addObject("book.jpg")

您没有使用UIImage 加载图像。

一旦您的图片成为项目图片资源 (Images.xcassets) 的一部分,请像这样加载您的图片:

self.imageObjects.addObject(UIImage(named: "book"))

(以上示例假设book是图片资产组的名称。)

请注意,此Adding Image Assets 网页包含有关如何设置图像资产组的说明。

【讨论】:

感谢您提供的信息,我会尝试并回复您。【参考方案2】:

您似乎加载图像不正确,就像@whyceewhite 在他的回答中所说的那样。

我会尽量让你明白的:

    打开 Assets.xcassets

    将您要使用的所有图像拖放到AppIcon

    以这种方式将图像添加到您的数组中:

imageObjects.addObject(UIImage(named: "whiteboardapp")!)

使用 Assets.xcassets 文件夹中显示的相同名称

【讨论】:

这项工作我实际上正在研究Whyceewhite 的建议,当我们来回走动时。我很感激帮助。快速的问题。看来我可以通过编写imageObjects.addObject(UIImage(name: "book.jpg") !) 来加载图像,这是在不将其放入 Assets.xcassets 的情况下编写的。将其排除在 .xcassets 之外有什么缺点吗? 使用 .xcassets 是处理图像等资产的推荐方式。它具有许多您可以从中受益的功能。你可以在这里查看所有功能developer.apple.com/library/ios/documentation/Xcode/Reference/…

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

在tableview中加载异步图像,它们在每次滚动时消失

如何在uitableview中加载数据而不每次都重新加载

在 iOS 上的一个 UITableView 中加载两个不同的 nib

IOS优化加载图片到UITableView

我在 vue js 样式标签中加载背景图像时遇到问题 [关闭]

在 UITableView 中加载数据时,活动指示器出现问题