我使用了相同的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
更新。我怎么能这样做?
答案 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)
将该消息发送到表视图,该视图可以采取适当的操作。
希望有所帮助。