मेरे पास काउंटरों की एक सूची है - सूची में प्रत्येक तत्व एक संख्या वाला काउंटर है और प्लस/माइनस बटन उपयोगकर्ता काउंटर को बढ़ाने या घटाने के लिए क्लिक कर सकते हैं। अब मैंने एक नेविगेशन लिंक जोड़ा है ताकि उपयोगकर्ता प्रत्येक काउंटर के विस्तृत दृश्य पर जा सकें। समस्या अब यह है कि आप सूची पर जहां भी क्लिक करते हैं, विवरण दृश्य हमेशा धक्का दिया जाता है - भले ही आप किसी एक बटन पर क्लिक करें (काउंटर बढ़ता है तो विवरण दृश्य नेविगेशन लिंक के माध्यम से धक्का दिया जाता है) - मैं केवल नेविगेशन लिंक का उपयोग करना चाहता हूं यदि उपयोगकर्ता नंबर पर या कहीं और क्लिक करता है लेकिन निश्चित रूप से नहीं अगर उपयोगकर्ता बटन पर क्लिक करते हैं। यह कैसे किया जा सकता है?

NavigationView {
        List {
            ForEach(counters, id: \.self) { counter in
                NavigationLink(destination: SingleCounterView(currentCounter: counter)) {
                    CounterCell(counter: counter)
                }
            }
        }
        .buttonStyle(PlainButtonStyle())
        .listStyle(GroupedListStyle())
}
1
2092Juli 12 अप्रैल 2020, 18:43

1 उत्तर

सबसे बढ़िया उत्तर

मैंने नेविगेशन व्यू में प्लस और माइनस बटन के साथ काउंटरसेल दिखाने के लिए यह परीक्षण किया है। यदि आप बटनों पर टैप करते हैं तो काउंटर इंक्रीमेंट, यदि आप शेवरॉन पर टैप करते हैं या बटनों के बाहर गंतव्य दिखाई देता है।

@State var counters = ["a","b","c"]

var body: some View {
    NavigationView {
        List {
            ForEach(counters, id: \.self) { counter in
                NavigationLink(destination: Text(counter)) {
                    CounterCell(counter: counter)
                }
            }
        }
        .buttonStyle(PlainButtonStyle())
        .listStyle(GroupedListStyle())
    }.navigationViewStyle(StackNavigationViewStyle())
}

struct CounterCell: View {

@State var counter: String
@State var inc = 0

var body: some View {
    HStack {
        Button(action: { self.inc += 1 }) {
            Text("plus")
        }
        Button(action: { self.inc -= 1 }) {
            Text("minus")
        }
        Text(" counter: \(counter) value: \(inc)")
    }
}
}
2
workingdog 13 अप्रैल 2020, 01:30