向 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



}



}

您需要:

  1. 创建自定义 UITableViewCell 子类,其中包含 @IBOutlet 文本标签和 UISwitch
  2. 在您的 table 视图的故事板或 xib 中,将动态 table 视图单元格的类型设置为自定义子类的名称。
  3. 在单元格的属性检查器中,为其指定一个自定义重用标识符。
  4. 拖一个UISwitch到动态单元格原型中。
  5. 将自定义电池的出口连接到文本标签和开关。
  6. 在您的 tableView(_:cellForRowAt:) 实现中,不是每次 实例化 一个 table 单元格(几乎 从未 你想做什么),调用 tableView.dequeueReusableCell(withIdentifier:for:) 并传入你在步骤 3 中使用的自定义重用标识符。将返回的单元格转换为你的自定义类型,然后设置出口的值。

在你的 cellForRawAtIndexPath 中试试这个:

let mySwitch = UISwitch()
cell.accessoryView = mySwitch