gpt4 book ai didi

swift - 如何使 ViewController 类符合协议(protocol)并将其设置为 "self"

转载 作者:行者123 更新时间:2023-11-28 13:30:27 25 4
gpt4 key购买 nike

所以我有一个包含 3 个不同类的 swift 文件

import UIKit

class TableRow: UITableViewCell {
@IBOutlet var row: DataRow!
}

class DataRow: UIStackView {
// addnew stackView

var allData: [DataCell]!

}


protocol DataCellDelegate {
func getData(_ personData: [Person])
}
class DataCell: UIStackView {
weak var delegate: DataCellDelegate?
var cellData: [Person]?

let youngerPeople = cellData.filter({$0.age < 16})
delegate.getData(youngerPeople)
}

// and I have this VC Class


import UIKit

class MyViewController: UIViewController, UITableViewDataSource, DataCellDelegate {

func getData(_ personData: [Person]){

}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: enter code hereIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! TableRow
}
}

//如何获取 DataCell 上的委托(delegate)并将其设置为 self //MyViewController 像这样//DataCell.delegate = self //因为当我在 1 上放置断点时 getData(_ personData: [Person]) 没有任何反应

最佳答案

在你的 View Controller 中你会想要:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: indexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! TableRow
for dataCell in cell.row.allData {
dataCell.delegate = self
}

return cell
}

此外,看起来您可能想要使您的 youngerPeople 属性惰性化:

let youngerPeople = {
let data = cellData.filter({$0.age < 16})
delegate.getData(data)
return data
}()

关于swift - 如何使 ViewController 类符合协议(protocol)并将其设置为 "self",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57439445/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com