我有一个tableView,tableView中的自定义表格视图单元格,以及自定义表格视图单元格中的一些文本字段。
我根据表格视图单元格中的文本字段中的信息更新一个类。
我能够使用didDeselectRowAt函数成功获取单元格的文本字段中的数据来更新我的类,但是,这不是正确的实现,因为它要求用户单击并取消选择文本的单元格字段在,如果在编辑文本字段后更新了类,那将会更好。我已经搜索了类似的tableViews函数,但没有找到一个有效的函数。
在我的CustomTableViewCell类中,我还能够创建一个在编辑文本字段时执行的函数,但是这是在另一个类中,我不确定如何从这个函数填充我的player类。
以下是ViewController中的代码:
public func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath) {
let cell = tableView.cellForRow(at: indexPath) as! CustomTableViewCell
for item in players {
if item.uniqueRowID == indexPath.row {
item.name = cell.textboxName.text!
}
}
}
我想做类似的事情,用自定义tableview单元格中的文本字段中的数据填充我的'player'类,但是我想在每个文本字段中编辑完成时发生这种情况,并且此代码在customTableViewCell类中不起作用。
非常感谢帮助!
答案 0 :(得分:2)
如何使用传递给单元格的模型对象?在单元内,可以在用户交互时进行任何更新。对象的编辑触发器保留在单元格内,可立即生效。
这是一个人为的例子。
function roundDown(numberToRound) {
//Check if the number would've rounded to 0
if (numberToRound < 10) return numberToRound;
//Return the number minus the difference to the nearest multiple of 10
return numberToRound - (numberToRound % 10);
}
在细胞中:
final class UIViewController: UITableViewDataSource {
var players: [Player] = [] // Players set by something in the view controller.
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
guard let cell = tableView.cellForRow(at: indexPath) as? CustomTableViewCell else { fatalError() }
cell.player = players[indexPath.row]
return cell
}
}
继续此之后,您可以选择使用ViewModel进一步抽象关系。