ios - 如何在Swift中将视图控制器的值访问到tableview中的tableview中
问题描述
我是 Swift 的新手,我无法访问 tableview 单元格内的 tableview 单元格中的 IBOutlet 变量。
我的代码是这样的。
在视图控制器中:
@IBOutlet var lblPopupTitle: UILabel!
在单元格内的 Tableview 中:
cell.btnEdit.tag = indexPath.item
cell.btnEdit.addTarget(self, action: #selector(btnEdit), for: .touchUpInside)
在 Tableview 单元格中:
class AttendanceInOutCell: UITableViewCell {
@IBOutlet var txtStartAt: UITextField!
override func awakeFromNib() {
super.awakeFromNib()
}
@objc func btnEditClick(_ sender: UIButton)
{
let index = IndexPath(row: sender.tag, section: 0)
let cell: AttendanceInsideCell = tableAway.cellForRow(at: index) as! AttendanceInsideCell
lblPopupTitle.text = cell.txtAwayStart.text
}
}
lblPopupTitle 告诉我“使用未解析的标识符‘lblPopupTitle’”。我该如何解决这个问题?
解决方案
有几种方法可以实现这一点。
协议 - 委托方法:
protocol PassDataDelagate: class {
func passtextFieldText(_ startText: String)
}
在课堂上制定协议:
AttendanceInOutCell: UITableViewCell {
@IBOutlet var txtStartAt: UITextField!
weak var textDelegate: PassDataDelagate?
override func awakeFromNib() {
super.awakeFromNib()
}
@objc func btnEditClick(_ sender: UIButton)
{
let index = IndexPath(row: sender.tag, section: 0)
let cell: AttendanceInsideCell = tableAway.cellForRow(at: index) as! AttendanceInsideCell
textDelegate?.passtextFieldText(cell.txtAwayStart.text)
}
}
在 Tableview Cell 中,添加以下行:
cell.btnEdit.tag = indexPath.item
cell.textDelegate = self
cell.btnEdit.addTarget(self, action: #selector(btnEdit), for: .touchUpInside)
在视图控制器中添加:
func passtextFieldText(_ startText: String) {
lblPopupTitle.text = startText
}
PS:如果需要,您也可以在委托函数中传递多个信息。
推荐阅读
- python - 在单个序列化程序 django 中读取和创建嵌套关系
- php - Atom 编辑器:如何为 php 以不同的方式突出显示单引号和双引号字符串
- express - 如何在猫鼬中添加多个模型?
- pine-script - 如何突出显示计算/值等于两个价格/水平之间的位置?
- uber-api - 无法在悉尼获得 UberPool
- python - 如何在python中为多个散点图制作一个循环?
- image - 如何更改图像中的像素值范围?
- javascript - 移动浏览器分享链接问题
- python - 在 python 3 中使用 pip 导入运行时安装的模块
- tensorflow - 多 GPU 推理张量流