向 UItableview 中的每个单元格添加一个开关
Adding a switch to each cell in a UItableview
我正在为我的抽认卡应用构建一个设置页面。我已经到了 运行 模拟器中的 tableview 的地步,它显示了 "setting" 变量中的所有不同类别(如下面的代码所示)。但是,我想在创建的每一行中都有一个开关。例如,如果您查看代码,创建的第一行称为 "sound effects"。该行将有一个开关,允许用户打开和关闭声音效果。我不是在问如何向开关添加功能(尽管如果你能解释一下,我将不胜感激)但现在我只关心在创建的每一行中创建一个开关。谢谢!
import UIKit
class ThirdViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
var setting = ["Sound Effects", "initial /l/ 1 syllable", "initial /l/ multisyllabic", "intersyllabic /l/", "final /l/", "initial /pl/", "initial /bl/", "initial /fl/", "initial /gl/", "initial /kl/", "initial /sl/", "final /l/ clusters"]
@IBOutlet weak var tableView: UITableView!
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return (setting.count)
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = UITableViewCell()
print(indexPath.row)
cell.textLabel?.text = setting[indexPath.row]
return cell
}
override func viewDidLoad() {
super.viewDidLoad()
tableView.dataSource = self
tableView.delegate = self
}
}
您需要:
- 创建自定义
UITableViewCell
子类,其中包含 @IBOutlet
文本标签和 UISwitch
。
- 在您的 table 视图的故事板或 xib 中,将动态 table 视图单元格的类型设置为自定义子类的名称。
- 在单元格的属性检查器中,为其指定一个自定义重用标识符。
- 拖一个
UISwitch
到动态单元格原型中。
- 将自定义电池的出口连接到文本标签和开关。
- 在您的
tableView(_:cellForRowAt:)
实现中,不是每次 实例化 一个 table 单元格(几乎 从未 你想做什么),调用 tableView.dequeueReusableCell(withIdentifier:for:)
并传入你在步骤 3 中使用的自定义重用标识符。将返回的单元格转换为你的自定义类型,然后设置出口的值。
在你的 cellForRawAtIndexPath 中试试这个:
let mySwitch = UISwitch()
cell.accessoryView = mySwitch
我正在为我的抽认卡应用构建一个设置页面。我已经到了 运行 模拟器中的 tableview 的地步,它显示了 "setting" 变量中的所有不同类别(如下面的代码所示)。但是,我想在创建的每一行中都有一个开关。例如,如果您查看代码,创建的第一行称为 "sound effects"。该行将有一个开关,允许用户打开和关闭声音效果。我不是在问如何向开关添加功能(尽管如果你能解释一下,我将不胜感激)但现在我只关心在创建的每一行中创建一个开关。谢谢!
import UIKit
class ThirdViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
var setting = ["Sound Effects", "initial /l/ 1 syllable", "initial /l/ multisyllabic", "intersyllabic /l/", "final /l/", "initial /pl/", "initial /bl/", "initial /fl/", "initial /gl/", "initial /kl/", "initial /sl/", "final /l/ clusters"]
@IBOutlet weak var tableView: UITableView!
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return (setting.count)
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = UITableViewCell()
print(indexPath.row)
cell.textLabel?.text = setting[indexPath.row]
return cell
}
override func viewDidLoad() {
super.viewDidLoad()
tableView.dataSource = self
tableView.delegate = self
}
}
您需要:
- 创建自定义
UITableViewCell
子类,其中包含@IBOutlet
文本标签和UISwitch
。 - 在您的 table 视图的故事板或 xib 中,将动态 table 视图单元格的类型设置为自定义子类的名称。
- 在单元格的属性检查器中,为其指定一个自定义重用标识符。
- 拖一个
UISwitch
到动态单元格原型中。 - 将自定义电池的出口连接到文本标签和开关。
- 在您的
tableView(_:cellForRowAt:)
实现中,不是每次 实例化 一个 table 单元格(几乎 从未 你想做什么),调用tableView.dequeueReusableCell(withIdentifier:for:)
并传入你在步骤 3 中使用的自定义重用标识符。将返回的单元格转换为你的自定义类型,然后设置出口的值。
在你的 cellForRawAtIndexPath 中试试这个:
let mySwitch = UISwitch()
cell.accessoryView = mySwitch