标签= 0的按钮不起作用

时间:2015-01-06 13:44:15

标签: ios swift

我的问题是使用标签= 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)")
}

3 个答案:

答案 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。