无法更改Swift iOS自定义单元格属性(展开空可选)

时间:2014-08-03 13:17:55

标签: ios swift

我已经完成了关于这件似乎很受欢迎的事情的所有问题。无论如何,我创建了一个简单的应用程序,其中包含使用自定义单元格的表视图。 我使用storyBoard,并使用与我创建的类相同的名称定义单元格,Xcode甚至自动完成了我。 虽然当我初始化一个新单元格时,我无法更改单元格中包含的标签和图像的属性。我收到一个错误,说我访问了一个零,我得到了它。虽然我似乎无法找到解决办法。有人可以帮忙吗?

import UIKit

class ExtenderCell: UITableViewCell {

@IBOutlet var main_image: UIImageView! 
@IBOutlet var name_label: UILabel! 
@IBOutlet var desc_label: UILabel!

init(to_put_image: UIImage, name: String, desc:String){
    super.init(style: UITableViewCellStyle.Subtitle, reuseIdentifier: "cell")
    name_label.text = name
    desc_label.text = desc
    main_image.image = to_put_image
}
}

1 个答案:

答案 0 :(得分:2)

您使用storyBoard创建了使用outlets创建单元格的内容。 outlets使用awakeForNib()之前无法访问storyBoardawakeFromNib之前没有取消归档。 outlets or properties中的init为零,因此您在unwrap nil outlet property方法中尝试init时会遇到此异常

由于outlet properties方法无法访问您的init,因此init中的outlets无法访问。因此您需要在awakeForNib()中设置cellForRowAtIndexPath。或者您可以在init中设置属性。因此,如果您想使用instance method,最好的方法是将storyBoard方法设为import UIKit class ExtenderCell: UITableViewCell { @IBOutlet var main_image: UIImageView! @IBOutlet var name_label: UILabel! @IBOutlet var desc_label: UILabel! func setContents(to_put_image: UIImage, name: String, desc:String){ name_label.text = name desc_label.text = desc main_image.image = to_put_image } }

cellForRowAtIndexPath

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { //Check your identifier in storyBoard is "cell" let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as ExtendedCell cell.setContents(yourImage, name: yourName, desc: yourDescription) return cell }

中设置单元格的内容
{{1}}