我的问题是使用标签= 0的按钮..所有按钮工作正常,当我点击任何按钮时,前一个拇指颜色变为默认(白色),但如果我点击标签= 0的按钮,那么当我点击下一个按钮,标签0仍然是红色的按钮,并没有更改为默认..然后整个功能拒绝正常工作
这是功能 任何帮助pleeeeease
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var cell = myTable.dequeueReusableCellWithIdentifier("toWork") as UITableViewCell
cell.textLabel?.text = Berufs[indexPath.row]
var btn:UIButton = UIButton(frame: CGRectMake(10, 3, 40, 40))
btn.tag = indexPath.row
btn.backgroundColor = UIColor.whiteColor()
btn.addTarget(self, action: "setNew:", forControlEvents: UIControlEvents.TouchUpInside)
btn.setImage(UIImage(named:"transparent.png"), forState: .Normal)
cell.indentationLevel = 1
cell.indentationWidth = 45
cell.addSubview(btn)
btn.backgroundColor=UIColor.whiteColor()
cell.selectionStyle = .None
return cell
}
var old = 1000
func setNew(sender:UIButton)
{
var tmpButton = view.viewWithTag(old) as? UIButton
let btn = sender
if (btn.backgroundColor == UIColor.redColor())
{
btn.backgroundColor = UIColor.whiteColor()
}
else if (btn.backgroundColor != UIColor.redColor())
{
tmpButton?.backgroundColor = UIColor.whiteColor()
btn.backgroundColor = UIColor.redColor()
selection = Berufs[sender.tag]
println("you are a \(selection)")
}
old = btn.tag
println("button tag is \(btn.tag)")
}
答案 0 :(得分:2)
0是tag
的默认值,因此view.viewWithTag(0)
可能会返回除按钮之外的其他内容。
你应该从1开始,所以
btn.tag = indexPath.row + 1
并相应地处理您的old
计数器。
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var cell = myTable.dequeueReusableCellWithIdentifier("toWork") as UITableViewCell
cell.textLabel?.text = Berufs[indexPath.row]
var btn:UIButton = UIButton(frame: CGRectMake(10, 3, 40, 40))
btn.tag = indexPath.row + 1 // <-- HERE
btn.backgroundColor = UIColor.whiteColor()
btn.addTarget(self, action: "setNew:", forControlEvents: UIControlEvents.TouchUpInside)
btn.setImage(UIImage(named:"transparent.png"), forState: .Normal)
cell.indentationLevel = 1
cell.indentationWidth = 45
cell.addSubview(btn)
btn.backgroundColor=UIColor.whiteColor()
cell.selectionStyle = .None
return cell
}
var old = 1000
func setNew(sender:UIButton)
{
var tmpButton = view.viewWithTag(old) as? UIButton
let btn = sender
if (btn.backgroundColor == UIColor.redColor())
{
btn.backgroundColor = UIColor.whiteColor()
}
else if (btn.backgroundColor != UIColor.redColor())
{
tmpButton?.backgroundColor = UIColor.whiteColor()
btn.backgroundColor = UIColor.redColor()
selection = Berufs[sender.tag - 1] // <-- HERE
println("you are a \(selection)")
}
old = btn.tag
println("button tag is \(btn.tag)")
}
答案 1 :(得分:0)
- (UIView *)viewWithTag:(NSInteger)tag
此方法会搜索当前视图及其所有子视图 指定视图
因此它可以返回任何默认标签== 0的内容。例如来自按钮或其他的标签
答案 2 :(得分:-1)
默认情况下,该按钮的标记为0。 我建议将标签设置为100 + indexPath.row,然后在检查时从UIButton的标签中减去100。