作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
<分区>
我想对我刚刚的想法提出一些意见:
我有一堆 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
})
}
}
...
}
作为优点,我看到以下内容:
我无法理解我的想法可能存在的缺点,以及它总体上是好还是坏的想法。
我是一名优秀的程序员,十分优秀!