gpt4 book ai didi

Swift3 多按钮动态编码触发事件

转载 作者:行者123 更新时间:2023-11-28 08:16:40 27 4
gpt4 key购买 nike

我有多个按钮。每个按钮都包含一个语言标签。

我想做的是,当用户点击按钮时,所选语言标签会根据点击的按钮更改其值。

选定的语言导出称为 SelectedLangText。

一个简单的解决方案是为每个按钮创建多个 Action socket 并设置 SelectedLangText 标签的值。但是,如果有 100 个按钮,那将是糟糕的编码。

我不确定如何处理来自 Web 开发的 Swift 3 中的这种情况。

enter image description here

最佳答案

在解决这样的问题时,我更喜欢使用委托(delegate)设计模式,因为我发现它比大量的@IBActions 更简洁

1- 创建一个语言类导入基金会

class Language {
var id: Int
var name: String
init(id: Int, name: String) {
self.id = id
self.name = name
}
}

2- 在 Storyboard或 Nib 中创建自定义单元格,然后添加适当的导出和操作。然后你为它创建一个委托(delegate)协议(protocol)

import UIKit
protocol CustomCellDelegate: class {
func customCell(newLanguageSelected language: Language)
}
class CustomCell: UITableViewCell {
var language: Language!
@IBOutlet weak var languageTextLabel: UILabel!
weak var delegate: CustomCellDelegate?
func setupCustomCell(withLanguage language: Language){
self.language = language
self.languageTextLabel.text = self.language.name
}
@IBAction func buttonPressed(sender: UIButton){
delegate?.customCell(newLanguageSelected: self.language)
}
}

3-最后在UITableViewDataSource的cellForRow方法中添加实现,在UITableViewController类中添加delegate的实现

import UIKit
class YourTableViewController: UITableViewController{
var languages: [Language] = []

//implement the other methods in the dataSource

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "reuse", for: indexPath) as! CustomCell
cell.delegate = self
cell.setupCustomCell(withLanguage: languages[indexPath.row])
return cell
}
}
extension YourTableViewController: CustomCellDelegate{
func customCell(newLanguageSelected language: Language) {
//Do what you will with the language
}
}

祝你好运

关于Swift3 多按钮动态编码触发事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42410711/

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