2011-12-02 27 views
5

मेरी कुछ परियोजनाओं में भयानक MonoTouch.dialog का उपयोग करते हुए पॉपअप को खारिज कर रहा है और अब एक प्रश्न है। मेरे पास एक रेडियो समूह है जिसका उपयोग मैं उपयोगकर्ता को अपने गृह राज्य का चयन करने की अनुमति देने के लिए करता हूं, राज्य एक स्ट्रिंग सरणी है।रेडियो ग्रुप आइटम चयनित

public static RootElement CreateStates() 
    { 
     return new RootElement ("State", new RadioGroup (0)) 
     { 
      new Section ("Choose State") 
      { 
       from x in States 
        select (Element) new RadioElement (x) 
      } 
     }; 
    } 

यह ठीक काम करता है, और जब मैं राज्य का चयन पॉपअप दिखाई देता है और मैं अपने राज्य लेने, लेकिन तब मैं अपनी मुख्य स्क्रीन को पाने के लिए नेविगेशन बार में वापस बटन क्लिक करने के लिए है। क्या कोई विकल्प चुनने पर पॉपअप खारिज करने का कोई तरीका है? बैक बटन हिट करने के लिए परेशान है। या क्या मैं इसे पूरी तरह से गलत समाधान का उपयोग कर रहा हूं?

मेरा पहला विचार रेडियोइलेमेंट को उप-वर्ग करना था और चयनित ईवेंट को पकड़ना था, लेकिन फिर भी मुझे यह सुनिश्चित नहीं था कि स्वचालित चयन पॉपअप को कैसे खारिज कर दिया जाए?

उत्तर

13

मैं आज सुबह एक ही समस्या में पड़ गए और मैं भी तो मैं संवाद पर एक "रद्द" बटन जोड़ सकते हैं जब डेटा संपादित किया गया था परिवर्तन के लिए एक घटना पर ट्रिगर करना चाहता था। दोनों कार्यों के लिए आपको रेडियोइलेमेंट को उप-वर्गीकृत करने और चयनित विधि को ओवरराइड करने की आवश्यकता होती है - यह सुनिश्चित करने के लिए अतिरिक्त चरण नोट करें कि यदि उपयोगकर्ता पहले से चयनित आइटम पर क्लिक करता है तो संवाद बंद नहीं होता है - अगर आप पहले से चुने गए हैं तो भी यह कुछ भी क्लिक करेगा, इसलिए मैं चाहता हूं कि मैं चाहता हूं इसके खिलाफ सुरक्षा - मेरा ऐसा दिखता है।

public class MyRadioElement : RadioElement { 
    // Pass the caption through to the base constructor. 
    public MyRadioElement (string pCaption) : base(pCaption) { 
    } 

    // Fire an event when the selection changes. 
    // I use this to flip a "dirty flag" further up stream. 
    public override void Selected (
     DialogViewController pDialogViewController, 
     UITableView pTableView, NSIndexPath pIndexPath) { 
     // Checking to see if the current cell is already "checked" 
     // prevent the event from firing if the item is already selected. 
     if (GetActiveCell().Accessory.ToString().Equals(
      "Checkmark",StringComparison.InvariantCultureIgnoreCase)) { 
      return; 
     } 

     base.Selected (pDialogViewController, pTableView, pIndexPath); 

     // Is there an event mapped to our OnSelected event handler? 
     var selected = OnSelected; 

     // If yes, fire it. 
     if (selected != null) { 
      selected (this, EventArgs.Empty); 
     } 

     // Close the dialog. 
     pDialogViewController.DeactivateController(true); 
    } 

    static public event EventHandler<EventArgs> OnSelected; 
} 
+0

आप आदमी हैं! बहुत बहुत धन्यवाद। मैं करीब था, यह था कि मैं जिस संवाद को याद कर रहा था उसे बंद करना था। मुझे ठीक इसी की आवश्यकता थी। – russellj

+0

ग्रेट। मुझे लगता है कि मैं इसका भी उपयोग कर सकता हूं: पी। russellj क्या आप इसे स्वीकृत उत्तर के रूप में चिह्नित कर सकते हैं? – Bart

संबंधित मुद्दे