繁体   English   中英

UI.onTapGesture如何返回原始输入swift

[英]How to return to the original input swift UI .onTapGesture

我有一个 function,它允许我通过获取 API 直接从网站收集汇率。

我使用下面的 function 将获取的数据与 Doubles 相乘。

        func operation(_ input: Double) -> Double {
        @State var showAlert : Bool = false
        switch self {
        case .Kazakhstan:
            if let rates = FetchData.conversionData?.rates["KZT"] {
                return (input * Double(rates))
            }else{
                //Show error Alert
                return input
            }
        case .Rubles:
            if let rates = FetchData.conversionData?.rates["RUB"] {
                return (input * Double(rates))
            }else{
                //Show error Alert
                return input
            }
        case .Usa:
            if let rates = FetchData.conversionData?.rates["USD"] {
                return (input * Double(rates))
            }else{
                //Show error Alert
                return input
            }
            
        case  .Dirhams:
            if let rates = FetchData.conversionData?.rates["AED"] {
                return (input * Double(rates))
            } else {
                //Show error Alert
                return input
            }

        }
    }

但目前,我已经添加了一个选项 of.onTapGesture,这将允许我使用我之前提到的上面的 function。 我不确定如何返回初始值的唯一问题。

下面是我的代码,用于对获取的汇率进行乘法运算。

     .onTapGesture {
                
                if monitor.isConnected == false {
                    showingAlert = true
                }
                CircleBorder.toggle()
                CurrencyLight.toggle()
                if tappedAgain == false {
                state.currentNumber = function.operation(state.currentNumber)
                    tappedAgain.toggle()
                } else {
                    
                    tappedAgain.toggle()
                }
            }

请忽略上面的所有内容,除了代码行

state.currentNumber = function.operation(state.currentNumber)

如何返回早于 function.operation(state.currentNumber) 已被放置的输入值(初始值 before.onTapGesture 已输入)?

顺便说一句 state.currentNumber = 0

我不确定你的state是什么,但你需要将之前的号码存储在另一个变量中,如下所示:

if tappedAgain == false {
    state.storedNumber = state.currentNumber
    state.currentNumber = function.operation(state.currentNumber)
    tappedAgain.toggle()
} else {
    state.currentNumber = state.storedNumber
    tappedAgain.toggle()
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM