Swift 3 错误:“参数标签 '(named:_:,_:,)' 不匹配任何可用的重载”,同时尝试将 UIImage 数组加载到 UITableView
Posted
技术标签:
【中文标题】Swift 3 错误:“参数标签 \'(named:_:,_:,)\' 不匹配任何可用的重载”,同时尝试将 UIImage 数组加载到 UITableView【英文标题】:Swift 3 error: "Argument labels '(named:_:,_:,)' do not match any available overloads" while trying to load an array of UIImage into a UITableViewSwift 3 错误:“参数标签 '(named:_:,_:,)' 不匹配任何可用的重载”,同时尝试将 UIImage 数组加载到 UITableView 【发布时间】:2017-05-18 22:18:39 【问题描述】:我在尝试将一组图像加载到 UITableView 中时遇到问题,该 UITableView 具有另一个视图控制器中的原型单元格。
我似乎没有从swift 3 error : Argument labels '(_:)' do not match any available overloads 得到答案,因为我很新,无法从答案中得出解释。
我收到的标题错误来自:
let portraitsOfHeroes:[UIImage] = UIImage(named: "picture1", "picture2", "picture3")
在尝试使用 (portraitsOfHeroes) 制作图像数组时:
import UIKit
class NewHeroVC: UIViewController, UITableViewDataSource
let listOfHeroes:[String] = ["Name1", "Name2", "Name3"]
let portraitsOfHeroes:[UIImage] = UIImage(named: "picture1", "picture2", "picture3")
并通过 (cell.newHeroPortrait.image) 使用它们:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
let cell = tableView.dequeueReusableCell(withIdentifier: "heroCell", for: indexPath) as! NewHeroCell
cell.newHeroName.text = listOfHeroes[indexPath.row]
cell.newHeroPortrait.image = portraitsOfHeroes[indexPath.row]
return cell
它在我的阵列上返回错误的原因是什么?
【问题讨论】:
【参考方案1】:我觉得你需要
let portraitsOfHeroes:[UIImage] = [UIImage(named: "picture1"), UIImage(named: "picture2"), UIImage(named: "picture3")
【讨论】:
非常感谢您!我的阵列线出了什么问题?编辑:嘿,不得不一遍又一遍地重复“UIImage(命名:“...”)”似乎很乏味。有没有更好的方法来构造那行代码?【参考方案2】:您的问题是 UIImage(named:)
只能采用一个名称,并且只返回一个图像。您需要为每个图像名称创建单独的 UIImage
实例。
如果您想避免反复输入UIImage(named:)
部分,可以使用flatMap
和文件图像名称数组:
let portraitsOfHeroes:[UIImage] = ["picture1", "picture2", "picture3"].flatMap UIImage(named: $0)
这种方法的好处是它可以处理丢失的图像。如果UIImage(named:)
为给定的图像名称返回nil
图像,则该图像根本不会出现在数组中。
【讨论】:
非常好用,比重复输入 UIImage(named:) 好多了。以上是关于Swift 3 错误:“参数标签 '(named:_:,_:,)' 不匹配任何可用的重载”,同时尝试将 UIImage 数组加载到 UITableView的主要内容,如果未能解决你的问题,请参考以下文章