swift,从具有 CustomCells 的 tableViewCells 中检索更改的数据
swift, retrieve changed data from tableViewCells that have CustomCells
这个问题在很多地方都被问过几次了,但是理解和解决起来都非常困难。
我的问题不一样,我研究了5个多小时才问这个问题
我有一个 tableView,其中有 3 种不同类型的 CustomCell。
我的自定义单元格有 3 个东西,两个共同的标签和文本字段。第三项(步进器、按钮、开关)
我动态放置了 10 个调用
的单元格
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
我理想中想做的事情->
当我的用户更改单元格上的数据时,我想获取所有 'updated' 数据,以便在单击 'Save' 时将其保存到我的数据库中。
我尝试使用
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
并使用断点,显然当我触摸单元格时代码块被触发。不幸的是,触摸的字面意思是触摸列表条目主体。
如果我使用自定义单元格中的 UI 项 (stepper/switch),则不会触发此代码部分。
我见过使用标签和委托的解决方案,但由于我是 iOS 的新手,我不确定如何实施或继续。我正在使用 Angela 的 Udemy iOS 课程自学。
自定义单元格
整体屏幕,我喜欢在用户更改文本字段值时获取它们
(已测试)
您好,我用来解决这个问题的一种方法是在您初始化 tableView 的子类之外添加处理函数。
//.... This is your cellForRowAt tableView function..
let cell = self.tableView.dequeueReusableCell(withIdentifier: cellId) as! cellSubclass
cell.stepperButton.addTarget(self, action: #selector(handleStep(_:)), for: .valueChanged)
return cell
}
@objc func handleStep(_ sender: UIStepper) {
print(sender.value)
let indexPath : IndexPath = IndexPath(item: 0, section: 0)
// Put the correct item # to locate where you have the stepper,
// Then create a separate function doing the same thing, but with the item
// number of the next cell where you get the value from the switch
let cell = tableView.cellForRow(at: indexPath) as! cellSubclass
cell.textField.text = "\(Int(sender.value))"
}
您正在通过创建单元格的函数内部的 addTarget 方法连接 UIStepper。
这是我的结果图片:
提示:添加stepper.minimumValue = 0
当值 == 0 时,这将禁用 [-] 按钮。
这个问题在很多地方都被问过几次了,但是理解和解决起来都非常困难。
我的问题不一样,我研究了5个多小时才问这个问题
我有一个 tableView,其中有 3 种不同类型的 CustomCell。
我的自定义单元格有 3 个东西,两个共同的标签和文本字段。第三项(步进器、按钮、开关)
我动态放置了 10 个调用
的单元格 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
我理想中想做的事情->
当我的用户更改单元格上的数据时,我想获取所有 'updated' 数据,以便在单击 'Save' 时将其保存到我的数据库中。
我尝试使用
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
并使用断点,显然当我触摸单元格时代码块被触发。不幸的是,触摸的字面意思是触摸列表条目主体。
如果我使用自定义单元格中的 UI 项 (stepper/switch),则不会触发此代码部分。
我见过使用标签和委托的解决方案,但由于我是 iOS 的新手,我不确定如何实施或继续。我正在使用 Angela 的 Udemy iOS 课程自学。
自定义单元格
整体屏幕,我喜欢在用户更改文本字段值时获取它们
(已测试) 您好,我用来解决这个问题的一种方法是在您初始化 tableView 的子类之外添加处理函数。
//.... This is your cellForRowAt tableView function..
let cell = self.tableView.dequeueReusableCell(withIdentifier: cellId) as! cellSubclass
cell.stepperButton.addTarget(self, action: #selector(handleStep(_:)), for: .valueChanged)
return cell
}
@objc func handleStep(_ sender: UIStepper) {
print(sender.value)
let indexPath : IndexPath = IndexPath(item: 0, section: 0)
// Put the correct item # to locate where you have the stepper,
// Then create a separate function doing the same thing, but with the item
// number of the next cell where you get the value from the switch
let cell = tableView.cellForRow(at: indexPath) as! cellSubclass
cell.textField.text = "\(Int(sender.value))"
}
您正在通过创建单元格的函数内部的 addTarget 方法连接 UIStepper。
这是我的结果图片:
提示:添加stepper.minimumValue = 0
当值 == 0 时,这将禁用 [-] 按钮。