gpt4 book ai didi

swift - 如何访问枚举之外的属性

转载 作者:行者123 更新时间:2023-11-28 05:54:08 27 4
gpt4 key购买 nike

如何从包含在此类中的枚举中访问我的类属性?

但是一旦我实例化了多个 MyClass,所有实例的 _toggledOn 都是相同的。

我希望有一些我不知道的干净快捷的解决方法。无论如何,先谢谢你!


@IBDesignable
class MyClass: UIView, SomeProtocols {

// MARK: - ENUM
enum ToggleState {
case on
case off

var color: UIColor {
switch self {
case .on:
return _onColor
default:
return _offColor
}
}
}

// MARK: - STATICS
private static var _onColor: UIColor = #colorliteral
private static var _offColor: UIColor = #colorliteral

// MARK: - IBSTUFF
@IBInspectable var toggledOffColor: UIColor = #colorliteral {
didSet {
MyClass._offColor = toggledOffColor
updateUI()
}
}

@IBInspectable var toggledOnColor: UIColor = #colorliteral {
didSet {
MyClass._onColor = toggledOnColor
updateUI()
}
}

@IBOutlet weak var background: UIView!

@IBAction func buttonPressed(_ sender: UIButton) {
toggleState = toggleState == .off ? .on : .off
}

// MARK: - PROPERTIES
var toggleState: ToggleState = .off {
didSet { toggle() }
}


// MARK: - METHODS
func updateUI() {
background.backgroundColor = toggleState.color
background.layer.addShadow()
}

func toggle() {
background.backgroundColor = toggleState.color
}
}

最佳答案

您的 _onColor_offColor 是静态的,因此不会有单独的 _onColor_offColor你的类的实例。\

您应该使 _onColor_offColor 成为非静态的,并删除 ToggleStatecolor 属性,并且而是在您的中添加这样的方法:

func color(forToggleState state: ToggleState) {
switch state {
case .on:
return _onColor
case .off:
return _offColor
}
}

代替 toggleState.color,你应该写:

color(forToggleState: toggleState)

color 不应该是 ToggleState 的属性,因为要计算它,您需要来自另一个对象的信息。

关于swift - 如何访问枚举之外的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51973496/

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