【发布时间】:2016-01-10 22:20:53
【问题描述】:
我在 UIViewController 中有一个 UITableView。我在这个视图控制器的底部有一个按钮。所有表格单元格都包含一个复选框,它是 UIButton 和 UILabel 的子类。按下按钮时,我想获取所有“已检查”单元格的标签文本。现在我不能使用 cellForRowAtIndexPath 因为它会为不可见的单元格返回一个 nil 值。因此,我想索引我的数据源。但问题是,由于 UIButton 没有 UITextfield 之类的 UIButtonDelegate,我不知道如何捕获按钮单击并存储选中复选框的单元格的 indexPath 行。请帮忙!非常感谢!
这是我的复选框代码,供参考
class CheckBox: UIButton {
/*
// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
override func drawRect(rect: CGRect) {
// Drawing code
}
*/
// images
var checkedImage = UIImage(named: "check")
var unCheckedImage = UIImage(named: "uncheck")
// bool property
var isChecked: Bool = false {
didSet {
if isChecked == true {
self.setImage(checkedImage, forState: .Normal)
} else {
self.setImage(unCheckedImage, forState: .Normal)
}
}
}
override func awakeFromNib() {
self.addTarget(self, action: "buttonClicked:", forControlEvents: UIControlEvents.TouchUpInside)
self.isChecked = false
}
func buttonClicked(sender: UIButton) {
if (sender == self) {
if isChecked == true {
isChecked = false
} else {
isChecked = true
}
}
}
}
【问题讨论】:
-
您是否考虑将这些值保存在一个数组中?这是一个简单的解决方案,但也许值得考虑。
-
我在一个数组中有我的值,但我需要一个索引来从这个数组中检索值。该索引将是“已检查”行的 indexPath.row。
标签: swift uitableview delegates uibutton swift2