我已经完成了关于这件似乎很受欢迎的事情的所有问题。无论如何,我创建了一个简单的应用程序,其中包含使用自定义单元格的表视图。 我使用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
}
}
答案 0 :(得分:2)
您使用storyBoard
创建了使用outlets
创建单元格的内容。 outlets
使用awakeForNib()
之前无法访问storyBoard
在awakeFromNib
之前没有取消归档。 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}}