Ios 如何从自定义UITableViewCell写入TableView中的数据

Ios 如何从自定义UITableViewCell写入TableView中的数据,ios,iphone,uitableview,Ios,Iphone,Uitableview,我有一个UITableView,它填充HomeKit中的“特征”数据。UITableView使用自定义UITableViewCell。该单元格有一个标签和一个开关。单元格@IBOutlet和@IBAction工作正常,允许我查看标签并在所有单元格中切换/设置开关动画。但是,我需要开关写入UITableView中的数据源,我不知道如何从自定义单元格中的UITableView引用/访问数据。我已经确定了如何获取所选单元格的indexPath 我知道这里有一个简单的答案…。。请帮助这个iOS/XCod

我有一个UITableView,它填充HomeKit中的“特征”数据。UITableView使用自定义UITableViewCell。该单元格有一个标签和一个开关。单元格@IBOutlet和@IBAction工作正常,允许我查看标签并在所有单元格中切换/设置开关动画。但是,我需要开关写入UITableView中的数据源,我不知道如何从自定义单元格中的UITableView引用/访问数据。我已经确定了如何获取所选单元格的indexPath

我知道这里有一个简单的答案…。。请帮助这个iOS/XCode/Swift初学者

import UIKit
import HomeKit

class CellServicesCharacteristics: UITableViewCell {

@IBOutlet weak var label2: UILabel!
@IBOutlet weak var switch1: UISwitch!

@IBAction func switch1Act(sender: UISwitch) {

    var cell = sender.superview?.superview as! CellServicesCharacteristics
    var tableView = cell.superview?.superview as! UITableView
    let indexPath = tableView.indexPathForCell(cell) as NSIndexPath!

    // How do I reference the Data Source from the TableView
    // so I can write to the Data Source?

    if switch1.on {
        label2.text = "On"
        // write to data source in tableview
    } else {
        label2.text = "Off"
        // write to data source in tableview
    }

}

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
}

}

到那边的DidSelectRowatinex路径去,你会看到的

  func tableView(tableView: UITableView!, didSelectRowAtIndexPath indexPath: NSIndexPath!){
        println("Here is your selected indexPath \(indexPath.row)")
        tableView.deselectRowAtIndexPath(indexPath, animated: true)
    }

有很多方法可以做到这一点。 您的任务:在切换为toggle时对HMCharacteristic对象执行操作

第一种方法 I-在自定义单元格中创建HMCharacteristic类型的属性。 II-在Tableview的cellForRowAtIndexPath中指定HMCharacteristic对象。 III-在自定义单元格类中,您可以访问HMCharacteric类的对象。 IV-在switch1Act方法调用中,您可以对HMCharacteristic的writeValue方法执行操作

第二种方法 I-您可以在Customcell类中定义委托,并在UITableview的类中实现委托。 II-在switch1Act方法调用中调用此委托,并传递适当的索引。 III-在Tableview的实现类中,委托方法将调用。您可以从字符数组中获取HMCharacteristic,以便对该特征执行任何操作

第三种方法 I-通过为customcell的switch对象设置目标,可以在Tableview的类本身中实现switch1Act方法。
II-您将在Tableview的类中收到方法调用,因此无需将HMCharacteristic作为属性传递给数据源

写入-这是什么意思?您应该通过我需要从Tableview中indexPath节/行引用的开关基本上打开/关闭写入HomeKit数据源。我不明白如何在自定义xib单元格中定义或引用数据源。如果我使用标准的UITableViewCell,我知道该怎么做。didSelectRowAtIndexPath函数在选择行时运行,而不是在选择开关时运行。选择开关,将在自定义UITableViewCell代码中执行@iAction func switch1Act。选择开关后,label2.txt将在打开和关闭之间正确切换。我还需要这个函数来相应地切换数据源中的数据,但不了解如何从这个函数中访问数据源。我确实有正确的索引。我相信这很简单,但我对这个环境的经验不足,因此我没有答案……将标签添加到每个开关按钮上,与indexPath.row相同。有了帮助,您将获得所选单元格的名称