如何在tableviewcell中保存所选项目
Posted
技术标签:
【中文标题】如何在tableviewcell中保存所选项目【英文标题】:How to save selected item in tableviewcell 【发布时间】:2020-02-17 07:35:15 【问题描述】:我想问一下如何将选定的所有项目保存在 tableViewCell 中,如下图所示。所以以后我可以用 alamofire 发布它,我以前没有发布数据的经验。这就是我所做的。
这是我的按钮,因此我可以稍后使用 alamofire 发布,目前我想对其进行测试。
@objc func handleSubmit()
var data: [String] = []
for (index, value) in attendance.enumerated()
print("index attendance: \(index), value attendance: \(value.status)")
let cell = tableView.cellForRow(at: IndexPath(item: index, section: 0)) as? GStudentAbsenceCell
UserServices.shared.postUserAttendances(status: cell?.status ?? "")
data.append(cell?.status ?? String(index))
print(data)
// In My UITableViewCell
var status: String?
statusLbl.didSelect (selectedText , index ,id) in
if selectedText == "Sakit" || selectedText == "Izin" || selectedText == "Alpha"
self.status = selectedText
self.statusLbl.backgroundColor = #colorLiteral(red: 0.8666666667, green: 0.4078431373, blue: 0.2705882353, alpha: 0.2)
self.statusLbl.textColor = #colorLiteral(red: 0.8666666667, green: 0.4078431373, blue: 0.2705882353, alpha: 1)
【问题讨论】:
创建单元格模型并根据选择进行存储和加载 好吧你的意思,但是当我存储单元格时。如果我创建单元格模型,我必须在我的发布请求中传递什么参数?抱歉@Vinodh 这是我第一次这样做 【参考方案1】:您不能将数据模型状态安全地存储在表格视图单元格中,因为在滚动单元格时可能会重复使用新可见的行,因此它将存储不同行的状态,因此会丢失“旧的”状态。
您需要将状态存储在模型中;如果使用现有模型不可行,您可以创建一个临时字典,将IndexPath
映射到state
你可以做的是:
使用自定义回调处理程序扩展您的 Cell,当状态更改时调用该处理程序。
当您设置单元格时,请提交一个可以处理这些状态变化的闭包
在该闭包中,更新模型
一些伪代码可能会对您有所帮助:
// in your custom cell
typealias Handler: (String) -> ()
class CustomTableViewCell : UITableViewCell
var selectionHandler:Handler?
func didSelect(...)
selectionHandler?(lblStatus.text)
// in your view controller
// in rowForCellatIndexPath:
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: IndexPath) -> UITableViewCell
let cell = /* dequeue */ as! CustomTableViewCell
cell.selectionHandler = statusText in
let row = indexPath.row
attendance[row].status = statusText /* get the status from the cell */
return cell
【讨论】:
对不起@AndreasOetjen 我不明白,这是我第一次这样做。你能给我看看示例代码吗? 好吧,如果你从来没有做过这样的事情,那么要学的东西很多。我会稍微更新一下我的答案,但我不能提供太多代码,因为这需要了解您的项目内部知识。 我明白了,谢谢@AndreasOetjen 我试着逐条理解并用谷歌搜索你的意思。以上是关于如何在tableviewcell中保存所选项目的主要内容,如果未能解决你的问题,请参考以下文章
如何在 tableviewcell 中显示选定的日期(在日历中)
如何将所选项目从 QListWidget、QTableWidget 保存到 Qsettings
如何将图像从 TableViewCell 传递到 UIImage
如何更改视图控制器中的标签 我要加载一个 tableviewcell 被选中? [复制]