Проблема сборки Swiftui с несколькими сборщиками в форме - PullRequest
1 голос
/ 05 октября 2019

Я изучаю SwiftUI (достаточно опытный разработчик ios / swift) и столкнулся с проблемой сборки при добавлении дополнительного элемента управления выбора. Смотрите код ниже. Когда я добавляю третий сборщик, а затем пытаюсь его собрать, он просто зависает и в итоге возвращается с ошибкой в ​​другом месте. Удалите ЛЮБОЙ из сборщиков и сборок кода, и я смогу его запустить. Не могу не думать, что я делаю что-то глупое здесь (извините заранее, если я)

import SwiftUI

struct CheckoutView: View {

    @EnvironmentObject var order: Order

    static let paymentTypes = ["Cash", "Credit Card", "iDine Points"]
    static let tipAmounts = [10, 15, 20, 25, 0]
    static let pickupTimes = ["Now", "Tonight", "Tomorrow"]

    @State private var paymentType = 0
    @State private var addLoyaltyDetails = false
    @State private var loyaltyNumber = ""
    @State private var testText = ""
    @State private var tipAmount = 1
    @State private var pickupTime = 0
    @State private var showingPaymentAlert = false

    var totalPrice: Double {
        let total = Double(order.total)
        let tipValue = total / 100 * Double(Self.tipAmounts[tipAmount])
        return total + tipValue
    }

    var body: some View {
        Form {
            Section {
                Picker("How do you want to pay?", selection: $paymentType) {
                    ForEach(0 ..< Self.paymentTypes.count) {
                        Text(Self.paymentTypes[$0])
                    }
                }
                Toggle(isOn: $addLoyaltyDetails.animation()) {
                    Text("Add iDine loyalty card")
                }
                if addLoyaltyDetails {
                    TextField("Enter your iDine ID", text: $loyaltyNumber)
                }
            }
            Section(header: Text("Add a tip?")) {
                Picker("Percentage:", selection: $tipAmount) {
                    ForEach(0 ..< Self.tipAmounts.count) {
                        Text("\(Self.tipAmounts[$0])%")
                    }
                }
                .pickerStyle(SegmentedPickerStyle())
            }
            // get build error when adding this section...
            Section(header: Text("Pickup Time")) {
                Picker("Time:", selection: $pickupTime) {
                    ForEach(0 ..< Self.pickupTimes.count) {
                        Text(Self.pickupTimes[$0])
                    }
                }
                .pickerStyle(SegmentedPickerStyle())
            }
            Section(header: Text("TOTAL: $\(totalPrice, specifier: "%.2f")").font(.largeTitle)) {
                HStack {
                    Spacer()
                    Button("Confirm order") {
                        self.showingPaymentAlert.toggle()
                    }
                    .padding(8)
                    .font(.headline)
                    .background(RoundedRectangle(cornerRadius: 8.0).fill(Color.blue))
                    .foregroundColor(.white)
                }
            }
        }
        .navigationBarTitle(Text("Payment"), displayMode: .inline)
        .alert(isPresented: $showingPaymentAlert) {
            Alert(title: Text("Order confirmed"), message: Text("Your total was $\(totalPrice, specifier: "%.2f") – thank you!"), dismissButton: .default(Text("OK")))
        }
    }
}

1 Ответ

0 голосов
/ 14 октября 2019

У меня тоже была проблема со средством выбора в форме, но он прекрасно работает, когда изменил цикл следующим образом: -

ForEach(self.array.indices, id: \.self) { (index: Int) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...