SwiftUI गतिशील बीनने के रूप में दुर्घटना

0

सवाल

मैं कर रहा हूँ एक नौसिखिया SwiftUI डेवलपर, और मैं कर रहा हूँ परेशानी हो रही है बनाने के एक दृश्य है कि गतिशील रूप से प्रस्तुत करता है अलग अलग बीनने के आधार पर एक उपयोगकर्ता के पिछले चयन में है कि देखने के लिए. समस्या को देखने के लिए, निम्न कोड चलाएँ सिम्युलेटर में, बदलने pickerOneSelection के लिए "बीनने तीन" है, तो इसे वापस बदलने के लिए "बीनने" दो और को बदलने का प्रयास pickerTwoSelection. एप्लिकेशन को तुरंत दुर्घटना; विशिष्ट त्रुटि के साथ यह खिलौना उदाहरण है "धागा 1: EXC_BAD_ACCESS (कोड=1, पता=0x8)". किसी भी जानकारी का स्वागत है!

एक अलग रूप में, मैंने देखा है इन सवालों का: (SwiftUI श्रेणीबद्ध बीनने के साथ गतिशील डेटा दुर्घटनाओं) और (swiftUi : 2 बीनने एक स्क्रीन पर app दुर्घटना के साथ "अनुक्रमणिका श्रेणी से बाहर"), लेकिन यदि संभव हो तो, मैं की तरह से बचने के लिए परिवर्तित मेरी स्ट्रिंग चयन चर (pickerOneSelection, pickerThreeSelection) में integers, जो करना चाहिए तो अनुवाद किया जा सकता है में वापस पाने के लिए तार के साथ जुड़े पाठ उपयोगकर्ता के चयन. यदि यह संभव नहीं है करने के लिए मैं क्या कर रहा हूँ करने के लिए कोशिश कर के बिना सूचकांक चर है, अगर आप मदद कर सकता है मुझे समझ में क्यों, है कि बहुत मददगार होगा ।

import SwiftUI

struct ContentView: View {
    @State var pickerOneSelection: String = "Picker Two"
    @State var pickerTwoVisible: Bool = false
    @State var pickerTwoSelection: Int = 3
    @State var pickerThreeSelection: String = "Option 1"
    
    var pickerOneOptions = ["Picker Two", "Picker Three"]
    var pickerThreeOptions = ["Option 1", "Option 2", "Option 3"]
    
    var body: some View {
        NavigationView {
            Form {
                Picker("Picker One selection", selection: $pickerOneSelection) {
                    ForEach(pickerOneOptions, id: \.self) {
                        Text($0)
                    }
                } // End of Picker 1
                
                if pickerOneSelection == "Picker Two" {
                    HStack {
                        Text("Picker Two selection")
                        Spacer()
                        Button(String(pickerTwoSelection)) {
                            self.pickerTwoVisible.toggle()
                        }
                    } // End of HStack
                    
                    if pickerTwoVisible {
                        Picker("Picker Two", selection: $pickerTwoSelection) {
                            ForEach(0..<32, id: \.self) {
                                Text(String($0))
                            }
                        }
                        .pickerStyle(WheelPickerStyle())
                    } // End of pickerTwoVisible
                    
                } else {
                    
                    Picker("Picker Three selection", selection: $pickerThreeSelection) {
                        ForEach(pickerThreeOptions, id: \.self) {
                            Text($0)
                        }
                    } // End of Picker 3
                    
                }
            } // End of Form
        } // End of NavigationView
    } // End of body
} // End of ContentView

बहुत धन्यवाद आपकी मदद के लिए और विशेषज्ञता!

picker swiftui xcode
2021-11-23 13:46:55
1

सबसे अच्छा जवाब

1

कुंजी करने के लिए समस्या है कि आप को छिपाने बीनने, तो यह सबसे अच्छा है करने के लिए सेट अपनी पारदर्शिता के लिए 0

Picker("Picker Two", selection: $pickerTwoSelection) {
                            ForEach(1..<32, id: \.self) {
                                Text(String($0))
                            }
                        }
                        .pickerStyle(WheelPickerStyle())
                        .opacity(pickerTwoVisible ? 1 : 0)
                        .frame(width: pickerTwoVisible ? nil : 0, height: pickerTwoVisible ? nil : 0)
2021-11-23 14:25:11

धन्यवाद इस सुझाव के लिए. दुर्भाग्य से, यह प्रकट नहीं होता है को हल करने के लिए समस्या है. के बाद इस कोड को जोड़ने के लिए बीनने दो, अब भी app दुर्घटनाओं अगर मैं बदल बीनने एक चयन प्रदर्शित करने के लिए बीनने तीन, तो बदल बीनने में से एक चयन करने के लिए वापस बीनने के दो और प्रयास करने के लिए बदल बीनने के साथ चयन. वहाँ कुछ और है कि मैं क्या करने की जरूरत है कहीं मेरे कोड में इस समाधान बनाने के लिए काम करते हो?
ej5607

अन्य भाषाओं में

यह पृष्ठ अन्य भाषाओं में है

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................