在UItableview中为每个单元格添加一个开关

时间:2017-07-16 02:44:58

标签: ios swift uitableview uiswitch

我正在为我的flashcard应用构建一个设置页面。当我在模拟器中运行tableview时,我已经达到了这一点。它显示了我在“设置”变量中的所有不同类别(如下面的代码所示)。但是,我希望在创建的每一行中都有一个开关。例如,如果查看代码,则创建的第一行称为“声音效果”。该行中将有一个开关,允许用户打开和关闭声音效果。我不是问如何向交换机添加功能(虽然如果你能解释它会被赞赏)但是现在我只关心在创建的每一行中创建一个开关。谢谢!

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



}



}

2 个答案:

答案 0 :(得分:1)

在你的cellForRawAtIndexPath中试试这个:

let mySwitch = UISwitch()
cell.accessoryView = mySwitch

答案 1 :(得分:0)

你需要:

  1. 创建一个自定义UITableViewCell子类,其文本标签为@IBOutletUISwitch
  2. 在表格视图的storyboard或xib中,将动态表格视图单元格的类型设置为自定义子类的名称。
  3. 在单元格的“属性”检查器中,为其指定一个自定义重用标识符。
  4. UISwitch拖到动态单元格原型中。
  5. 将自定义单元格的插座连接到文本标签并切换。
  6. tableView(_:cellForRowAt:)实现中,不是每次实例化一个表格单元格(几乎永远你想做什么),而是调用{{1并传入您在步骤3中使用的自定义重用标识符。将返回的单元格转换为自定义类型,然后设置出口的值。