ios - 我需要帮助使用 Swift 在视图控制器中创建两个单选按钮
问题描述
单选按钮的代码我目前正在使用 Xcode 在 Swift 中开发一个 iOS 应用程序,我的任务是创建两个会对总价值产生影响的单选按钮。第一个单选按钮需要返回一个值,该值将四舍五入到最接近的整数或半数 (.5),第二个单选按钮只会向上或向下舍入到最接近的整数。我已经在视图控制器中创建了 UI 单选按钮(用于我的设置屏幕)。希望是根据所选的相应单选按钮使我的应用程序中的总值受到影响。我需要帮助使其发挥作用。
以下是我给出的四舍五入规则:
单选按钮 #1:
0.0 到 0.24(四舍五入到零)
0.25 至 0.49(向上取整至 0.5)
0.5 到 0.74(向下舍入到 0.5)
0.75 到 0.99(四舍五入到最接近的整数)
单选按钮 #2:
0.00 到 0.49(四舍五入到零)
0.50 到 0.99(四舍五入到最接近的整数)
解决方案
根据您的要求有两个功能。在您的原始代码中,它呈现与 roundHalf 函数相同的情况。
如果我的理解是正确的,你的值应该限制在 0<=x<=1。所以我添加了保护功能来保证这一点。
由于它是一个单选按钮,因此每次只能选择一个按钮。所以请禁用另一个。
@IBOutlet var unitPenRadioButton1 : UIButton!
@IBOutlet var unitPenRadioButton2 : UIButton!
func calculateInsulin(carbs: Double, bloodSugar : Double, icRatio: Double, correctionFactor: Double)-> Double{
do{
let carbResult = Double(carbs / icRatio)
var bloodResult: Double = 0
if bloodSugar - 150 > 1{
bloodResult = (bloodSugar - 150) / correctionFactor
}
let wholeBloodResult = Double(Int (bloodResult))
let fractionBloodResult = bloodResult - wholeBloodResult
var roundedFaction : Double
roundedFaction = unitPenRadioButton1.isSelected ? try roundHalf( fractionBloodResult) : try roundWhole(fractionBloodResult)
let finalBloodResult = wholeBloodResult + roundedFaction
let insulinResult = carbResult + finalBloodResult
return insulinResult
}
catch let error as NSError{
print (error)
}
return Double.greatestFiniteMagnitude
}
private func roundHalf(_ value : Double ) throws -> Double{
guard value >= 0 && value <= 1 else {
throw NSError.init(domain: NSCocoaErrorDomain, code: 60010, userInfo: ["error" : "value is not within [0,1]"])
}
return round(value * 2.0) / 2.0
}
private func roundWhole(_ value : Double )throws -> Double{
guard value >= 0 && value <= 1 else {
throw NSError.init(domain: NSCocoaErrorDomain, code: 60010, userInfo: ["error" : "value is not within [0,1]"])
}
return round(value)
}
@IBAction func didTapHalfUnit (_ sender : Any){
unitPenRadioButton2.isSelected = false
unitPenRadioButton1.isSelected = true
print( calculateInsulin(carbs: 100, bloodSugar: 170, icRatio: 600, correctionFactor: 45) )
}
@IBAction func didTapWholfUnit (_ sender : Any){
unitPenRadioButton1.isSelected = false
unitPenRadioButton2.isSelected = true
print( calculateInsulin(carbs: 100, bloodSugar: 170, icRatio: 600, correctionFactor:45) )
}
推荐阅读
- javascript - macOS Safari 问题与(getUserMedia)以角度 6 从相机获取视频流 - NotReadableError:I/O 读取操作失败
- javascript - 检查图像扩展 jQuery 以插入 JPG 或 GIF
- c - fprintf 对时间戳计数器有奇怪的影响
- c# - 登录后如何根据角色将用户重定向到不同的主页?
- node.js - 未处理的承诺拒绝警告。Passport.js
- python - 使用 openCV 通过网络摄像头制作实时草图
- javascript - 将日期传递给 componentDidMount 中的函数
- ruby-on-rails - 基于一些计算逻辑更新数据库属性
- jestjs - 如何检索子组件的实例
- unity3d - 从 2d 视频添加背景创建 360