在 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 中加载图像时遇到问题的主要内容,如果未能解决你的问题,请参考以下文章
在 iOS 上的一个 UITableView 中加载两个不同的 nib