我是swift的新手。我正在以编程方式执行我的项目,并将数据从api加载到tableView和tableView,就像ios设置页面一样。
现在我需要所有行信息,点击"添加到购物车"按钮。我该怎么做?
这是我的代码示例:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
switch indexPath.section {
case 0:
let cell = tableView.dequeueReusableCell(withIdentifier: cartHeaderCell, for: indexPath) as! CartHeaderCell
cell.configureCell(indexPath.item)
return cell
case 1:
let obj = data?[indexPath.row]
var cell = UITableViewCell()
switch obj {
case is Addon:
cell = tableView.dequeueReusableCell(withIdentifier: addonCell, for: indexPath) as! AddonCell
let switchView = UISwitch(frame: .zero)
switchView.setOn(false, animated: true)
cell.accessoryView = switchView
guard let addon = obj as? Addon else {
return cell
}
cell.textLabel?.text = "\(addon.name) + €\(addon.price)"
case is AddonGroup:
cell = tableView.dequeueReusableCell(withIdentifier: addonGroupCell, for: indexPath) as! AddonGroupCell
cell.accessoryType = UITableViewCellAccessoryType.disclosureIndicator
guard let addonGroup = obj as? AddonGroup else {
return cell
}
if let addons = addonGroup.addonList {
cell.detailTextLabel?.text = ""
var selectedAddons = ""
for _addon in addons
{
if _addon.isSelect == true {
selectedAddons = selectedAddons + "\(_addon.name)"
}
}
cell.detailTextLabel?.text = selectedAddons
}
cell.textLabel?.text = addonGroup.name
...........................................
答案 0 :(得分:0)
正如Fahim所提到的,您需要设置一个数据模型,在用户与每个单元格交互之前/期间/之后记录每个单元格的状态。因此,当细胞离开屏幕然后重新开启时,它将显示模型的正确状态。
其次,对于UISwitchViews,您应该实例化并将这些内容添加到每个单元格中的contentView,以保持cellForRow功能清洁无问题。原因引导我进入下一点:如何在用户与UISwitchView交互后记录每个UISwitchView的状态。您将要创建协议并在UICollectionViewCell中添加委托(继承类,委托应该是弱变量),以便在轻触UISwitch时更新模型。
如果您还有其他问题,我可以尽力帮助您!