从填充它的单元格类中创建UITableView更新

时间:2017-09-19 13:38:01

标签: ios swift uitableview

我使用了相同的nib文件来填充UITableView。我为这些细胞建立了两种不同的功能。如果您在单元格的任何位置而不是一个小按钮,它会运行一个函数并转移到另一个页面。但是,如果单击小按钮,我想更新UITableView并在单击的单元格下方输入一个单元格,作为一种下拉列表。我有以下成功运行单独的功能:

import UIKit

class ContactCell: UITableViewCell {
    //below are the outlets for the conact cells
    @IBOutlet weak var msgStatus: UIView!
    @IBOutlet weak var contactName: UILabel!
    @IBOutlet weak var dropDown: UIButton!


    override func awakeFromNib() {
        super.awakeFromNib()
        // Initialization code

        msgStatus.layer.cornerRadius = msgStatus.frame.size.width/2

    }

    override func setSelected(_ selected: Bool, animated: Bool) {
        super.setSelected(selected, animated: animated)

        // Configure the view for the selected state
    }
    @IBAction func dropDown(_ sender: Any) {
        print("selected drop down")
    }

}

继续前进我需要能够获取当前单元格的索引并从UITableView的类中执行UITableViewCell更新。我怎么能这样做?

1 个答案:

答案 0 :(得分:0)

你可以通过授权来做到这一点。为您的ContactCell创建委托协议:

protocol ContactCellDelegate {
    func pleaseAddDropdown(to: ContactCell)
}

然后为单元格设置委托参数:

var delegate: ContactCellDelegate?

然后将您的表视图订阅到ContactCellDelegate协议(如果您使用的是标准UITableView,则必须进行子类化)。这意味着您需要为表视图类编写pleaseAddDropdown()的实现。将单元格出列时,请确保将delegate参数分配给表格视图。

现在,在dropdown()的实现中,您只需要执行以下操作:

guard let _ = delegate else { return }

delegate!.pleaseAddDropdown(to: self)

将该消息发送到表视图,该视图可以采取适当的操作。

希望有所帮助。