使用 swift 创建自定义的表格视图单元格

Posted

技术标签:

【中文标题】使用 swift 创建自定义的表格视图单元格【英文标题】:Create a customized table view cell using swift 【发布时间】:2014-11-09 06:21:10 【问题描述】:

我正在按照本教程http://www.raywenderlich.com/62435/make-swipeable-table-view-cell-actions-without-going-nuts-scroll-views 创建自定义表格单元格。但我使用的是swift而不是objective 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)”,我会收到错误提示 'required' 初始化器 'init(coder:)' 必须由 UITableViewCell' 的子类提供。

我已阅读此主题 Class does not implement its superclass's required members

关于在我需要的 init(coder aDecoder: NSCoder) 中做什么。

但我无法编译代码。

如果有人可以帮助我,我将不胜感激。

谢谢。

【问题讨论】:

【参考方案1】:

这是说您需要在所有初始化方法的末尾定义委托,因为该类变量未设置为可选。一种方法是将其设为可选(意味着它可以为 nil)

var delegate: SwipeableCellDelegate?

了解初始化和可选属性类型here

【讨论】:

谢谢。我尝试将委托更改为可选。我添加了一个 setter 方法,如下所示:var delegate: SwipeableCellDelegate? setDelegate(delegate: SwipeableCellDelegate) self.delegate = delegate 。但我现在得到一个编译器错误,说“预期声明” 你为什么要添加一个setter?这与原始问题有关吗? 好的,我想我可以删除我的 setter 方法,并在调用者中直接设置我的表格单元格视图的“委托”成员。感谢您的帮助。

以上是关于使用 swift 创建自定义的表格视图单元格的主要内容,如果未能解决你的问题,请参考以下文章

在 Swift 表格视图中创建自定义分隔符

TableView 单元格自定义类型文本自身重叠或为空白

在 Swift 中将自定义 UITableViewCell 共享到多个 UITableViewController

在表格视图单元格中使用自定义 XIB

表格内容在使用子视图的自定义单元格的 TableView 滚动上消失 - Swift

在自定义表格视图单元格中设置 UIButton 的高度