SwiftUI передает вычисленную переменную в следующее представление - PullRequest
1 голос
/ 13 июля 2020

Я новичок в кодировании IOS и SwiftUI. Я много гуглил, но не мог найти решения, как передать вычисленную переменную в следующее представление. Вот фрагменты того, что у меня есть:

import SwiftUI

struct ContentView: View {

@State private var isShowingResultView = false

@State private var netRate = "0"
@State var daysMonth = "0"
@State var hoursWeek: String = "0"
@State var daysOnsite: String = "0"
@State var ticketCost: String = "0"
@State var hotelCost: String = "0"
@State var otherCost: String = "0"
//@State var travellCostResult: Double = 0.00

var travellCostPerHour: Double{
    get {
        let daysMonthNbr = Int(daysMonth) ?? 0
        let hoursWeekNbr = Int(hoursWeek) ?? 0
        let daysOnsiteNbr = Int(daysOnsite) ?? 0
        let ticketCostNbr = Double(ticketCost) ?? 0
        let hotelCostNbr = Double(hotelCost) ?? 0
        let otherCostNbr = Double(otherCost) ?? 0

        let travellCostPerWeek = (ticketCostNbr + (Double((daysOnsiteNbr-1))*hotelCostNbr)+otherCostNbr)
        
        let travellCostPerHour: Double = Double(travellCostPerWeek) / Double(hoursWeekNbr)
        
        return travellCostPerHour.isNaN ? 0 : travellCostPerHour
    }
}
.
.
.

var body: some View {
              HStack {
                    NavigationLink("Calculate", destination: ResultView(netRate: self.$netRate, travellCostPerHour: travellCostPerHour), isActive: $isShowingResultView).navigationBarTitle("Result").buttonStyle(GradientButtonStyle())
                    .adaptToKeyboard()
                }

struct ResultView: View {

@Binding var netRate: String
@Binding var travellCostPerHour: Double
.
.
.

struct ResultView_Previews: PreviewProvider {

   @State static var netRate: String = ""
   @State static var travellCostPerHour: Double = 0.00

   static var previews: some View {
      ResultView(netRate: $netRate, travellCostPerHour: $travellCostPerHour )
   }
}

Я получаю это сообщение об ошибке в navigationLink для travellCostPerHour: Невозможно преобразовать значение типа Double в ожидаемый тип аргумента Binding. Можно ли указать мне правильный путь сюда пожалуйста?

1 Ответ

0 голосов
/ 13 июля 2020

Если это вычисляемое свойство, привязка не требуется, передайте его как есть

struct ResultView: View {

@Binding var netRate: String
var travellCostPerHour: Double      // << just regular

// .. other code
...