【发布时间】:2018-10-06 12:34:15
【问题描述】:
在下面的代码中,我用一些数据填充我的表。开关已关闭,它们不必关闭。在情节提要中,我将其定义为 On。
单元格:
var switchHandler: ((Bool)->Void)?
@IBAction func switchChanged(_ sender: UISwitch) {
self.switchHandler?(sender.isOn)
}
视图控制器:
var selectedCells = Set<IndexPath>()
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "SmsCell") as? SmsTableViewCell
cell?.PhonNumberLbl.text = data![indexPath.section].contacts[indexPath.row]?.phoneNumber
cell?.NameLbl.text = data![indexPath.section].contacts[indexPath.row]?.name
cell?.selectedTF.isOn = (data![indexPath.section].contacts[indexPath.row]?.selected)!
cell?.selectedTF.isOn = self.selectedCells.contains(indexPath)
cell?.switchHandler = { (switchState) in
if switchState {
self.selectedCells.insert(indexPath)
} else {
self.selectedCells.remove(indexPath)
}
}
return cell!
}
型号:
typealias smsModelList = [SmsModel]
struct SmsModel:Codable {
var unitNo:Int?
var unitPlaque:String?
var billText:String?
var contacts:[ContactsModel?]
}
typealias contactlistmodel = [ContactsModel]
struct ContactsModel:Codable
{
var id :Int?
var selected :Bool?
var phoneNumber : String?
var name : String?
}
有人看到关闭开关的问题吗?
【问题讨论】:
-
嗨,杰克。在
UIViewController的哪里找到代码?您的代码有些不完整,因此很难猜测您的上下文。具体来说,我不确定indexPath来自哪里。所以我不确定这段代码存在于哪个方法中,是委托方法实现还是自定义方法。能具体说明一下吗? -
您好,欢迎您。请编辑您的问题以在上下文中显示代码;这些行包含哪些功能?您正在根据模型中的一些数据和您选择的集合设置开启状态;您可能应该只使用其中之一
标签: ios swift uitableview uiswitch