我有一个UITableViewController,希望在cellForRowAtIndexPath传递一个imageView。
已经设置了数组:
func setupArrays (){
if NSUserDefaults.standardUserDefaults().boolForKey("stepsSwitch") == true {
titleArray.append(stepsCell.title())
iconArray.append(iconFunction1.icon())
}
if NSUserDefaults.standardUserDefaults().boolForKey("hrSwitch") == true {
titleArray.append(heartRateCell.title())
iconArray.append(iconFunction2.icon())
}
if NSUserDefaults.standardUserDefaults().boolForKey("weightSwitch") == true {
titleArray.append(weightCell.title())
iconArray.append(iconFunction3.icon())
}
}
我在cellForRowAtIndexPath上调用它们
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var myCell:TableViewCell = tableView.dequeueReusableCellWithIdentifier("myCell") as TableViewCell
myCell.title.text = titleArray[indexPath.row]
myCell.icon = iconArray[indexPath.row]
return myCell }
在tableViewCell中我有出口:
import UIKit
class TableViewCell: UITableViewCell {
@IBOutlet var title: UILabel!
@IBOutlet var icon: UIImageView!
我在单独的文件中创建标题和图标imageView。 图标imageView:
import UIKit
class IconFunction1: UITableViewCell{
func icon() -> UIImageView {
var imageName = "HR-white-140px-height.png"
let image = UIImage(named: imageName)
let imageView = UIImageView(image: image!)
imageView.frame = CGRect(x: 282.5, y: 8, width: 25, height: 25)
self.addSubview(imageView)
imageView.layer.zPosition = 10
return imageView
}
标题
import Foundation
class StepsCell: CellProtocol {
func title () -> String{
return "Steps"
}
}
在主故事板中,我添加了一个带参考插座的UIImageView作为myCell。
问题: 代码运行没有错误,标题加载正确,但tableView不加载图标..它是不可见的。为什么呢?
问题:如何在cellForRowAtIndexPath传递ImageView?我做错了什么?
接受的答案并没有直接回答我的问题,但我接受了它,因为它解决了问题并解释了为什么我的实施是错误的。
答案 0 :(得分:2)
您正在更改图片视图,但它应该是图片
func icon() -> UIImage? {
var imageName = "HR-white-140px-height.png"
return UIImage(named: imageName)
}
iconArray.append(iconFunction.icon())
myCell.icon.image = iconArray[indexPath.row]
P.S。你的实现看起来很复杂......
<强>更新强> 如果您想要更改视图的外观,您应该尝试在Interface Builder中尽可能多地进行操作。但是如果你被迫以编程方式改变外观,你应该继承视图,例如。
class MyCell: UITableViewCell{
@IBOutlet var title: UILabel!
@IBOutlet var icon: UIImageView!
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
icon.frame = CGRect(x: 282.5, y: 8, width: 25, height: 25)
icon.layer.zPosition = 10
var imageName = "HR-white-140px-height.png"
icon.image = UIImage(named: imageName)
}
}