[英]How to use UIImage in swift 3 the array comes nil?
我有一组png图像。
iconeImage = [UIImage(named:"ion-home")!,UIImage(named:"ms-medkit")!,UIImage(named:"ion-edit")!,UIImage(named:"ion-clipboard")!,UIImage(named:"ion-clipboard")!,UIImage(named:"ion-waterdrop")!,UIImage(named:"ion-calendar")!]
我有一个用于表视图的函数,该函数使用此数组元素设置图像
这是代码
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "MenuTableViewCell") as! MenuTableViewCell
cell.imgIcon.image = iconeImage[indexPath.row]
return cell
}
但是它给我的错误是iconeImage具有nil值。 所以你能给我建议解决方案。 我是Swift 3的初学者
这是屏幕截图 ![两个木偶] [1]
建议您不要存储图像名称,而不是将所有图像保存在内存中:
let iconImages = ["ion-home", "ms-medkit", "ion-edit", "ion-clipboard", "ion-waterdrop", "ion-calendar"]
并在需要时直接预加载每个图像。 因为它是小图标,所以不会影响性能。 代码也看起来更干净。
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "MenuTableViewCell") as! MenuTableViewCell
cell.imgIcon.image = UIImage(named: iconImages[indexPath.row])
return cell
}
仔细检查是否所有资产都已添加到您的项目中。 如果它们在那里,则应显示图像。
尝试避免在代码中使用隐式展开的可选(!)。 零值将使应用程序崩溃。 在您的示例中,imageView.image是可选的,因此您可以为其设置UIImage(named:“ imageName”)。
另外,您可以尝试清理构建文件夹,清理项目并重新安装该应用程序。 有时在Xcode中复制资源失败。
请尝试以下格式
let img = iconeImage[indexPath.row]
if let imgData = img {
cell.imgView.image = UIImage(data:imgData)
}
您可以改为存储图像名称:
let iconImageNames = ["ion-home","ms-medkit", ... , "ion-calendar")]
以后使用您的方法访问它们:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "MenuTableViewCell") as! MenuTableViewCell
let name = iconeImage[indexPath.row] ?? yourDefaultImageName
cell.imgIcon.image = UIImage(named: name)
return cell
}
举个例子
我不知道到底是什么问题。
但是当我搜索了stackoverflow时。 我在某处读到Assets.xcassets有问题
然后我得到了错误的确切本
然后借助该答案解决错误。
并希望我解决了错误。
同时问题出在资产文件夹中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.