MonoTouch.Dialog: Responding to a RadioGroup Choice

后端 未结 1 531
醉话见心
醉话见心 2020-12-28 22:18

I have a Dialog created by MonoTouch.Dialog. There is a list of Doctors in a radio group:

    Section secDr = new Section (\"Dr. Details\") {
       new Root         


        
相关标签:
1条回答
  • 2020-12-28 22:49

    Create your own RadioElement like:

    class MyRadioElement : RadioElement {
        public MyRadioElement (string s) : base (s) {}
    
        public override void Selected (DialogViewController dvc, UITableView tableView, NSIndexPath path)
        {
            base.Selected (dvc, tableView, path);
            var selected = OnSelected;
            if (selected != null)
                selected (this, EventArgs.Empty);
        }
    
        static public event EventHandler<EventArgs> OnSelected;
    }
    

    note: do not use a static event if you want to have more than one radio group

    Then create a RootElement that use this new type, like:

        RootElement CreateRoot ()
        {
            StringElement se = new StringElement (String.Empty);
            MyRadioElement.OnSelected += delegate(object sender, EventArgs e) {
                se.Caption = (sender as MyRadioElement).Caption;
                var root = se.GetImmediateRootElement ();
                root.Reload (se, UITableViewRowAnimation.Fade);
            };
            return new RootElement (String.Empty, new RadioGroup (0)) {
                new Section ("Dr. Who ?") {
                    new MyRadioElement ("Dr. House"),
                    new MyRadioElement ("Dr. Zhivago"),
                    new MyRadioElement ("Dr. Moreau")
                },
                new Section ("Winner") {
                    se
                }
            };
        }
    

    [UPDATE]

    Here is a more modern version of this RadioElement:

    public class DebugRadioElement : RadioElement {
        Action<DebugRadioElement, EventArgs> onCLick;
    
        public DebugRadioElement (string s, Action<DebugRadioElement, EventArgs> onCLick) : base (s) {
            this.onCLick = onCLick;
        }
    
        public override void Selected (DialogViewController dvc, UITableView tableView, NSIndexPath path)
        {
            base.Selected (dvc, tableView, path);
            var selected = onCLick;
            if (selected != null)
            selected (this, EventArgs.Empty);
        }
    }
    
    0 讨论(0)
提交回复
热议问题