gpt4 book ai didi

ios - 如果选择了 UIButton,则在 Swift (Xcode 9) 中取消选择其他 UIButton

转载 作者:行者123 更新时间:2023-11-28 09:35:23 24 4
gpt4 key购买 nike

我正在开发一款应用程序,可以让我为 Arduino Uno 中的某些 LED 选择不同的颜色。现在,我有点卡在代码里了。

如果选择了一个按钮,它是一种颜色,则应取消选择另一个按钮,因为您一次只能有一种颜色。请看下面的代码。下面的代码是所有按钮都连接到的子类。

import UIKit

class ToggleTheButtons: UIButton {

// Buttons are all off on load.
var isOn = false

override init(frame: CGRect) {

super.init(frame: frame)
initButton()

}

required init?(coder aDecoder: NSCoder){

super.init(coder:aDecoder)
initButton()

}

func initButton(){
// Initializes the button.
layer.borderWidth = 0.0

addTarget(self, action: #selector(ToggleTheButtons.buttonPressed), for: .touchUpInside)

}

// What happens when we press the buttons.
@objc func buttonPressed() {

activateButton(bool: !isOn)

}

// Toggles button on and off.
func activateButton(bool: Bool) {

isOn = bool

// Ternary operator. true:false (Boolean is nodig)
_ = bool ? (layer.borderWidth = 2.0) : (layer.borderWidth = 0.0)
// layer.borderColor = (borderColorOfTheButton as! CGColor)


}

}

由于我仍在努力提高我的技能,您可能会在这里找到一些奇怪的代码。请将您发现的错误反馈给我。

我期待着阅读您的回复。

编辑:我已经通过 IBActions 链接了我的 UIButtons,截图如下。 Screenshot of main.storyboard

您将在下面找到 licht.swift 的代码。此处链接了按钮。

import UIKit

class Licht: UIViewController {

// Link alle knoppen met de code. Check ToggleTheButtons.swift voor de toggle functies. Misschien een IBAction.
// @IBOutlet weak var redButton: ToggleTheButtons!

@IBAction func redButton(_ sender: ToggleTheButtons) {
}
@IBAction func orangeButton(_ sender: ToggleTheButtons) {
}

@IBAction func yellowButton(_ sender: ToggleTheButtons) {
}

@IBAction func greenButton(_ sender: ToggleTheButtons) {
}

@IBAction func lightBlueButton(_ sender: ToggleTheButtons) {
}

@IBAction func darkBlueButton(_ sender: ToggleTheButtons) {
}

@IBAction func purpleButton(_ sender: ToggleTheButtons) {
}

@IBAction func pinkButton(_ sender: ToggleTheButtons) {
}

@IBAction func whiteButton(_ sender: ToggleTheButtons) {
}




override func viewDidLoad() {
super.viewDidLoad()

// Do any additional setup after loading the view.

func databaseConnection() {

// Hier komt de connectie met de database.

}

}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}

}

此致

弗兰克。

最佳答案

根据您的 Storyboard布局设计和您的要求,我为您提供了完全不同的解决方案。

您可以使用 UICollectionView如果您可以使用 Collection View 管理您的设计(网格 3 x 3),则仅具有单个单元格选择权限。

在里面设置按钮 UICollectionViewCell并使用 UICollectionViewDelegate 处理其选择/取消选择方法:

collectionView(_:didSelectItemAt:)

告诉代理指定索引路径中的项目已被选中。

optional func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath)

collectionView(_:didDeselectItemAt:)

告诉代理指定路径中的项目已取消选择。

optional func collectionView(_ collectionView: UICollectionView, didDeselectItemAt indexPath: IndexPath)


试试看:

class ViewController: UIViewController, UICollectionViewDelegate, UICollectionViewDataSource {

@IBOutlet var collection: UICollectionView?

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "ButtonCell", for: indexPath) as! ButtonsCell
cell.button.isSelected = cell.isSelected // handle button selection
// or for your toggle button
// cell.button.isOn = cell.isSelected
return cell
}

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
let cell = collectionView.cellForItem(at: indexPath) as? ButtonsCell
cell?.button.isSelected = true // select button

// or for your toggle button
// cell.button.isOn = true
}

func collectionView(_ collectionView: UICollectionView, didDeselectItemAt indexPath: IndexPath) {
let cell = collectionView.cellForItem(at: indexPath) as? ButtonsCell
cell?.button.isSelected = false // deselect button

// or for your toggle button
// cell.button.isOn = false
}

}

// UICollectionViewCell class with your button
class ButtonsCell: UICollectionViewCell {

@IBOutlet weak var button: ToggleTheButtons!

}

关于ios - 如果选择了 UIButton,则在 Swift (Xcode 9) 中取消选择其他 UIButton,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49530773/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com