gpt4 book ai didi

ios - 关闭作为 UITableViewCell 子类的属性以更新值 : Is it a bad idea?

转载 作者:搜寻专家 更新时间:2023-10-30 23:15:20 26 4
gpt4 key购买 nike

<分区>

我想对我刚刚的想法提出一些意见:

我有一堆 UITableViewCell 子类。在我的特定情况下,它只是添加一个 UISwitch 并有一个属性来访问它。

设置开关的值很简单。更新与此开关关联的 Bool 不是那么多。

我想添加一个闭包作为我的单元格的属性,这样我就可以调用它来更新我的 UITableViewController 子类中的 bool

这是我想到的一些代码:

class SwitchTableViewCell:UITableViewCell {
@IBOutlet var theSwitch:UISwitch!

var switchValueChangedBlock:((Bool) -> Void)?

override func awakeFromNib() {
theSwitch.addTarget(self, action: "switchValueChanged", forControlEvents: .ValueChanged)
}

deinit {
theSwitch.removeTarget(self, action: nil, forControlEvents: .AllEvents)
}

func setCallback(callback:(Bool) -> Void) {
switchValueChangedBlock = callback
}

func switchValueChanged() {
switchValueChangedBlock?(theSwitch.on)
}
}


class myTableViewController:UITableViewController {
var alarmEnabled:Bool = true
...
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var cell:UITableViewCell?
if indexPath.section == enableSection {
cell = tableView.dequeueReusableCellWithIdentifier(enableAlarmCellIdentifier,forIndexPath: indexPath)
let myCell = cell as! SwitchTableViewCell
myCell.theSwitch.on = alarmEnabled
myCell.setCallback({[unowned self] (boolValue:Bool) in
self.alarmEnabled = boolValue
})
}
}

...
}

作为优点,我看到以下内容:

  • 无需委托(delegate)
  • 在我需要确定需要更新哪个值的地方没有调用任何方法(我的单元格有多个实例用于不同的变量)

我无法理解我的想法可能存在的缺点,以及它总体上是好还是坏的想法。

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com