以编程方式在cellForRowAtIndexPath上传递UIImageView

时间:2015-01-08 09:47:45

标签: ios swift uiimageview

我有一个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?我做错了什么?

接受的答案并没有直接回答我的问题,但我接受了它,因为它解决了问题并解释了为什么我的实施是错误的。

1 个答案:

答案 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)
    }
}