我正在尝试将图像编码为UIImage,但我遇到了麻烦。我不确定如何为每个列表项的每个不同图像编码。我正在构建的应用程序是一个列表,其中包含附加到每个列表项的图片。
以下是MyWhatsit课程:
class MyWhatsit {
var name: String {
didSet {
postDidChangeNotification()
}
}
var location: String {
didSet {
postDidChangeNotification()
}
}
var image: UIImage? {
didSet {
postDidChangeNotification()
}
}
var viewImage: UIImage {
return image ?? UIImage(named: "camera")!
}
init( name: String, position: String = "" ) {
self.name = name
self.location = location
}
func postDidChangeNotification() {
let center = NSNotificationCenter.defaultCenter()
center.postNotificationName(WhatsitDidChangeNotification, object: self)
}
}
以下是表格视图:
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return things.count
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath)
let thing = things[indexPath.row] as MyWhatsit
cell.textLabel?.text = thing.name
cell.detailTextLabel?.text = thing.location
cell.imageView?.image = thing.viewImage
return cell
}
override func tableView(tableView: UITableView, canEditRowAtIndexPath indexPath: NSIndexPath) -> Bool {
// Return false if you do not want the specified item to be editable.
return true
}
override func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {
if editingStyle == .Delete {
things.removeAtIndex(indexPath.row)
tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Fade)
} else if editingStyle == .Insert {
// Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view.
}
}
答案 0 :(得分:3)
我相信你需要做的就是像标题和副标题一样创建一系列图像。添加其他图片时,将图像名称添加到数组并附加tableView。
我在您的代码中看到的是名称和位置。看起来您需要添加“图像”并将其设置为图像的名称。例如,MyWhatsit(name: "Bob Smith", position: "midfielder", image: "bobSmithImage")
...然后将单元格的图像视图设置为等于图像名称。
希望这会让你感动!
答案 1 :(得分:0)
您需要创建自己的个人类别。例如,根据玩家的位置对玩家进行排序。使用将图像存储到数组中的类。例如:
let goalkeeper = [UIImage(named:"ivanlucic"), UIImage(named:"manuelneuer")]
let rightBack = [UIImage(named:"danialves"), UIImage(named:"sergioramos")]
获得图像列表后,在cellForRowAtIndexPath
内,您可以进行检查,并将其引用到您创建的阵列中。
答案 2 :(得分:0)
没有了解如何在tableview中设置代码,但可以添加名称为
的图像名称其中图像键包含您存储在XCAssets中的图像名称
var things: [MyWhatsit] = [
MyWhatsit(name: "Ivan Lucic", position: "Goalkeeper","image":"ivan"),
MyWhatsit(name: "Manuel Neuer", position: "Goalkeeper","image":"manuel")...]
您可以在创建名称的同时初始化图像
init( name: String, position: String = "", imagename:string ) {
self.name = name
self.position = position
self.imgview = UIImage(named:imagename)
}