Ios Swift-UIToolbar项目选定状态

Ios Swift-UIToolbar项目选定状态,ios,swift,uitoolbar,Ios,Swift,Uitoolbar,我的导航控制器中有此工具栏。现在我要做的是,当用户在我的工具栏中选择一个项目(UIBarButtonItem)时,用背景色高亮显示该项目,直到用户取消选择该项目或选择另一个项目。我该怎么做 以下是我对工具栏每个项目的选择器方法,我通过故事板将它们连接起来: @IBAction func addText(sender: AnyObject) { annotationSelected = 3 } @IBAction func drawCircle(sender: AnyObject

我的导航控制器中有此工具栏。现在我要做的是,当用户在我的工具栏中选择一个项目(
UIBarButtonItem
)时,用背景色高亮显示该项目,直到用户取消选择该项目或选择另一个项目。我该怎么做

以下是我对工具栏每个项目的选择器方法,我通过故事板将它们连接起来:

@IBAction func addText(sender: AnyObject) {
        annotationSelected = 3
}

@IBAction func drawCircle(sender: AnyObject) {
    annotationSelected = 1
}

@IBAction func drawRectangle(sender: AnyObject) {
    annotationSelected = 2
}

@IBAction func drawStamp(sender: AnyObject) {
    annotationSelected = 4
}
这就是我所做的一切。以下是我的工具栏的屏幕截图:

以下是我得到的:

@IBOutlet var textToolButton: UIBarButtonItem!

    @IBOutlet var circleToolButton: UIBarButtonItem!

    @IBOutlet var rectangleToolButton: UIBarButtonItem!

    @IBOutlet var stampToolButton: UIBarButtonItem!
然后

然后是方法

func barButtonPressed(sender: UIBarButtonItem) {

        print(sender)
        annotationSelected = sender.tag
    }

背景仍然没有改变颜色

最干净的方法是创建一个整体功能,在其中传递已选择的按钮。大概是这样的:

    var allButtons = [button1, button2, button3, button4]

    func resetTabBar (buttonSelected:UIButton) {
        for button in allButtons {
            if button == buttonSelected {
                button.backgroundColor = "Black"
            }
            else {
                button.backgroundColor = "Blue"
            }
        }

    }
然后在您创建的函数中,只需按如下方式传入发件人:

@IBAction func addText(sender: AnyObject) {

    resetTabBar(sender)

}

注意:这是假设您的所有按钮都有插座。如果没有,请添加它们

最干净的方法是创建一个整体函数,在该函数中输入已选择的按钮。大概是这样的:

    var allButtons = [button1, button2, button3, button4]

    func resetTabBar (buttonSelected:UIButton) {
        for button in allButtons {
            if button == buttonSelected {
                button.backgroundColor = "Black"
            }
            else {
                button.backgroundColor = "Blue"
            }
        }

    }
然后在您创建的函数中,只需按如下方式传入发件人:

@IBAction func addText(sender: AnyObject) {

    resetTabBar(sender)

}

注意:这是假设您的所有按钮都有插座。如果没有,请添加它们

我发现了一个相同的问题。也许我能帮你。

我找到了一个简单的方法。你可以拖动一个按钮到工具栏上,你会看到这样的画面

你应该改变按钮的类型和图像。

然后应该将该按钮链接到viewController

@IBOutlet weak var textToolButton: UIButton!
你能做到

let selectedBackgroundColor = UIImage(color: .redColor())
textToolButton.setBackgroundImage(selectedBackgroundColor, forState: .Highlighted)

也许我能帮你。

我发现一个同样的问题。也许我能帮你。

我找到了一个简单的方法。你可以拖动一个按钮到工具栏上,你会看到这样的画面

你应该改变按钮的类型和图像。

然后应该将该按钮链接到viewController

@IBOutlet weak var textToolButton: UIButton!
你能做到

let selectedBackgroundColor = UIImage(color: .redColor())
textToolButton.setBackgroundImage(selectedBackgroundColor, forState: .Highlighted)

可能我可以帮你。

这对UIBarButtonItem不起作用,没有背景色用例和代码可以工作,用户可以根据需要修改代码。这对UIBarButtonItem不起作用,没有背景色用例和代码可以工作,用户可以随意修改代码。我无法上传图像。因为我没有10个名声。这是给UIButtons而不是UIBarbuttonite的。对不起,我不能表达我的想法。UIBarButtonItem*barButtonItem=[[UIBarButtonItem alloc]initWithCustomView:customButton];所以我们可以更改customButton以实现此目标。我无法上载图像。因为我没有10个名声。这是给UIButtons而不是UIBarbuttonite的。对不起,我不能表达我的想法。UIBarButtonItem*barButtonItem=[[UIBarButtonItem alloc]initWithCustomView:customButton];因此,我们可以更改customButton以实现此目标。