gpt4 book ai didi

ios - UI 在 Swift 计算器的弧度和度数模式之间切换

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:02:13 24 4
gpt4 key购买 nike

我一直在关注 Stanford Swift 教程,并且我有一个适用于大多数任务的解决方案。

但是,我想实现一个启用弧度/度数模式的 UISwitch 函数。

我已经创建了这个函数,但我似乎找不到让它工作的方法 - 它一直给我默认的弧度答案,而不是度数。

请帮我改进代码

CalculatorEngine.swift

// this is the conversion function
func sind(degrees: Double) -> Double {
return sin(degrees * 180 / M_PI)
}

ViewController.swift

 class ViewController: UIViewController {

@IBOutlet weak var switch: UISwitch!

@IBOutlet weak var labelDisplay: UILabel!


override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}


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




// this function is supposed to call conversion function once switch is On
@IBAction func switchTogOnOff(sender: UISwitch) {
for button5 in [radButton, degButton] {
button5.hidden = !button5.hidden
}

if mySwitch.on {
engine.sind(displayValue)

}
else {
displayValue = 0
}

}

最佳答案

有多种方法可以做到这一点,一种方法是在您的 CalculatorEngine

中声明一个转换因子
var unitTransformFactor: Double = 1

并在度数和弧度之间切换时更改其值

@IBAction func switchTogOnOff(sender: UISwitch) {
...

var degreesSelected: Bool = mySwitch.on

// there are better ways to write to do this but it will work
self.engine.unitTransformFactor = degreesSelected ? M_PI / 180 : 1.0
}

然后您可以在您的引擎中将您的数学运算声明为

func sinOperation(angle: Double) -> Double {
return sin(angle * self.unitTransformFactor)
}

func asinOperation(value: Double) -> Double {
return asin(value) / self.unitTransformFactor
}

并将它们用作:

knownOps["sin"] = Op.UnaryOperation("sin", sinOperation)
...
knownOps["sin⁻¹"] = Op.UnaryOperation("sin⁻¹", asinOperation)

顺便说一下,您的 sind 函数无法正常工作,您必须将度数乘以 M_PI 并除以 180 而不是反过来。

关于ios - UI 在 Swift 计算器的弧度和度数模式之间切换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35850501/

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