我在快速编码方面很新,在过去的几天里,我一直在试图找到解决我的问题的方法,但我无法这样做。
我有一个名为userData的类,它具有各种属性:
class UserData {
var name: String
var age: Int
var credits: Int = 1
...
init(name: String, age: Int) {
self.name = name
self.age = age
}
}在viewController.swift中,我声明了这个类的一个对象:
...
var user = UserData(name: "testing", age: 5)
...在同一个viewController中,我有一个带有几个UITableViewCells的UITableView。在每个单元中都有一个UIStepper
使用单元格中的viewController.swift,,我希望增加或减少位于tableViewCell.swift文件中的对象user的属性credits,并从tableViewCell.swift文件中执行这一操作。
根据我所能找到的,我认为我应该使用一个委托,但我可以知道如何实现它。
更多信息:原谅我的艺术作品,我不是艺术家.

用户有一组可供工作的蚂蚁(此数字是我的对象用户的属性)。也有一个属性的蚂蚁数量,目前工作(‘蚂蚁使用’在我的屏幕截图)。
起初,顶部的白色标签上写着'0/5‘(这意味着用户有5个可用的蚂蚁可以工作,但目前没有一个可以工作)。
当用户增加“清除蚂蚁”的步数时,顶部的白色标签应该是'1/5‘(这意味着当前有1只蚂蚁在5只蚂蚁中工作)。
我想要做的是,当用户单击一个步骤时,“当前工作”的用户属性将适当地递增或减少。
谢谢
发布于 2019-03-23 14:18:55
在视图控制器的cellForRowAt中设置该逻辑。
在设置单元格时,您可以在视图控制器中添加一个函数,作为每次UIStepper值更改的目标:
// inside cellForRowAtIndexPath:
cell.addTarget(self, action: #selector(doSomething(sender:), for: .valueChanged)在doSomething中,您设置了更新模型的逻辑。
func doSomething(sender: UIStepper) {
// do stuff here
}使用委托模式的示例进行编辑,这对于以后的读者来说是一个更好的解决方案。
首先创建一个协议:
protocol StepperCellDelegate {
func didChangeValueForStepper(inCell: Cell, whateverInfoYouWantHere:...)
func otherUsefulFunctions(...)
}在单元格类中,为值更改时设置目标/操作:
// inside the cell's initialization (`init(style:reuseIdentifier:)`
self.addTarget(self, action: #selector(valueChanged(sender:), for: .valueChanged)您的单元格还需要一个委托属性:
weak var stepperCellDelegate: StepperCellDelegate?doSomething应该是这样的:
func valueChanged(sender: UIStepper) {
stepperCellDelegate?.didChangeValueForStepper(inCell: self, ...)
}您的ViewController将实现该协议
extension MyViewController: StepperCellDelegate {
func didChangeValueForStepper(inCell: Cell, whateverInfoYouWantHere:...) {
// implementation here
}
func otherUsefulFunctions(...){
// implementation here
}
}在cellForRowAtIndexPath内部,将自己设置为委托:
// inside cellForRowAtIndexPath:
cell.stepperCellDelegate = self发布于 2019-03-23 16:45:15
授权是处理这一问题的适当方式。
这个UItableviewCell --两者看起来都是相似的--应该公开一个协议,其中包含一组UIViewController可以实现的方法。方法在点击UIStepper小部件时触发。
最好坚持这种方法,并在任何地方重用它。使事情易于管理,松散耦合。
https://stackoverflow.com/questions/55314351
复制相似问题