gpt4 book ai didi

ios - 已选择表格 View 单元格

转载 作者:行者123 更新时间:2023-11-28 10:36:03 24 4
gpt4 key购买 nike

我将 TableView 与选定的按钮一起使用,我的代码有问题,因为选择按钮时,我不知道单元格的 IndexPath 是什么。

我将文件 TableView 单元格与表格 View cell.xib 一起使用

@IBOutlet weak var lbTitle: UILabel!
@IBOutlet weak var lbDetail: UILabel!
@IBOutlet weak var btnCheckMark: UIButton!
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
}

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

// Configure the view for the selected state
}

在我的 View Controller 中我有这个:

  override func viewDidLoad() {
super.viewDidLoad()
self.topBar.rightBarButtonItem = UIBarButtonItem(title: "Apply", style: .done, target: self, action: #selector(self.apply))
self.topBar.leftBarButtonItem = UIBarButtonItem(image: UIImage(named: "backButton"), style: .done, target: self, action: #selector(backHome))
listeView.register(UINib.init(nibName: "TableViewCell", bundle: nil), forCellReuseIdentifier: "CheckList")
listeView.dataSource = self
listeView.delegate = self
}

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return deviceData.count
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
//let rowpath = indexPath.row
let cell = tableView.dequeueReusableCell(withIdentifier: "CheckList") as! TableViewCell
cell.lbTitle.text = "\(self.deviceData[indexPath.row].brandName) \(self.deviceData[indexPath.row].modelName)"
cell.lbDetail.text = "\(self.deviceData[indexPath.row].operatorName) \(self.deviceData[indexPath.row].version), \(self.deviceData[indexPath.row].browserName) \(self.deviceData[indexPath.row].version)"
//cell.selectionStyle = .none
cell.btnCheckMark.addTarget(self, action: #selector(checkMarkButton(sender:)), for: .touchUpInside)
return cell
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
print(indexPath.row)
let test = TableViewCell()
test.lbTitle.text = "11"

}
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return 71.0
}
@objc func checkMarkButton(sender: UIButton) {
if sender.isSelected {
sender.isSelected = false
nb -= 1
//rint(paramaters)
} else {
sender.isSelected = true
paramaters["devicesList[\(nb)][deviceId]"] = id
nb += 1
}
print(paramaters)
}

在我的函数 checkMarkButton 中,我想知道 indexPath.row

最佳答案

在 Swift 中,最有效的方法是回调闭包

非常简单:没有协议(protocol)、没有目标/操作、没有委托(delegate)、没有标签、没有索引路径、没有 View 数学、没有 @objc 属性。

  • 在代表deviceDatamodel中添加一个属性isSelected

    var isSelected = false
  • 单元格中添加一个属性callback 和一个IBAction。将按钮连接到 IBAction。在 IBAction 中切换选择状态并调用回调

    var callback : ((UIButton) -> Void))?

    @IBAction func buttonPressed(_ sender : UIButton) {
    sender.isSelected.toggle()
    callback?(sender)
    }
  • view controller 中设置并处理 cellForRow 中的回调

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    //let rowpath = indexPath.row
    let cell = tableView.dequeueReusableCell(withIdentifier: "CheckList") as! TableViewCell
    let data = self.deviceData[indexPath.row]
    cell.lbTitle.text = "\(data.brandName) \(data.modelName)"
    cell.lbDetail.text = "\(data.operatorName) \(data.version), \(data.browserName) \(data.version)"
    cell.btnCheckMark.isSelected = data.isSelected
    cell.callback { button in
    self.deviceData[indexPath.row].isSelected = button.isSelected
    // or if deviceData is a class with reference semantics
    // data.isSelected = button.isSelected
    }
    return cell
    }

关于ios - 已选择表格 View 单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53613618/

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