[英]Create a customized table view cell using swift
我正在按照本教程http://www.raywenderlich.com/62435/make-swipeable-table-view-cell-actions-without-going-nuts-scroll-views创建自定义表格单元格。 但我使用的是 swift 而不是目标 c。
这是我在 swift 中的表格单元格视图。
protocol SwipeableCellDelegate {
func buttonOneActionForItemText(itemText: NSString)
func buttonTwoActionForItemText(itemText: NSString)
}
class MyTableViewCell: UITableViewCell {
@IBOutlet weak var button1: UIButton!
@IBOutlet weak var button2: UIButton!
@IBOutlet weak var mytextLabel: UILabel!
@IBOutlet weak var testLabel: UILabel!
var delegate: SwipeableCellDelegate
init(delegate: SwipeableCellDelegate) {
self.delegate = delegate
super.init()
}
required init(coder aDecoder: NSCoder) {
// fatalError("init(coder:) has not been implemented")
super.init(coder : aDecoder)
}
}
但它不编译,我收到错误消息:
MyTableViewCell.swift:38:9:属性“self.delegate”未在 super.init 调用时初始化
如果我去掉“init(coder aDecoder: NSCoder)”,我会收到错误提示“必需的”初始值设定项“init(coder:)”必须由 UITableViewCell 的子类提供。
我读过这个线程Class does not implement its superclass's required members
关于在我需要的 init(coder aDecoder: NSCoder) 中做什么。
但是我无法编译代码。
如果有人可以帮助我,我将不胜感激。
谢谢你。
有 3 种方法可以解决您的问题,各有各的优点和麻烦。
如果您只需要编译代码,但永远不会使用编码器所需的初始化,则可以将默认错误保留在那里。
您也可以将委托字段设置为可选,但从现在开始,您需要处理代码中 nil 的理论上的可能性。 像这样:
var 委托:SwipeableCellDelegate?
guard let dlgt = delegate else {print("Delegate is not set for this cell"); 返回}
或者您可以在公共某处为委托定义默认值,并将其设置在所需的 init 中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.