首页 > 解决方案 > 如何在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’”。我该如何解决这个问题?

标签: iosswiftuitableview

解决方案


有几种方法可以实现这一点。

协议 - 委托方法:

    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:如果需要,您也可以在委托函数中传递多个信息。


推荐阅读