2012-03-26 48 views
2

我是MonoTouch和MonoTouch.Dialog的初學者。 我正在嘗試使用MT對話框,但我無法理解如何獲取數據。MonoTouch.Dialog如何從對話框中獲取數據

比方說,我有事件類:

class Event { 
bool type {get;set;} 
string name {get;set;} 
} 

而且我想用這個對話框定義編輯:

 return new RootElement ("Event Form") { 

     // string element 
      new Section ("Information"){ 
       new EntryElement ("Name", "Name of event", ""), 
       new RootElement ("Type", new RadioGroup (0)){ 
        new Section(){ 
         new RadioElement ("Concert"), 
         new RadioElement ("Movie"), 
         new RadioElement ("Exhibition"), 
         new RadioElement ("Sport") 
        } 

       } 
      }, 

我怎麼能傳遞數據和從這種形式? (使用低級API不反思其支持綁定)

回答

0

你可以做這樣的事情:

//custom class to get the Tapped event to work in a RadioElement 
    class OptionsRadioElement: RadioElement 
    { 
      public OptionsRadioElement(string caption, NSAction tapped): base(caption) 
      { 
       Tapped += tapped; 
      } 
    } 

//Custom Controller 
public class MyController: DialogViewController 
{ 
    private readonly RadioGroup optionsGroup; 
    private readonly EntryElement nameField; 



    public MyController(): base(null) 
    { 
     //Note the inline assignements to the fields 
     Root = new RootElement ("Event Form") { 
      new Section ("Information"){ 
      nameField = new EntryElement ("Name", "Name of event", ""), 
      new RootElement ("Type", optionsGroup = new RadioGroup (0)){ 
       new Section(){ 
        new OptionsRadioElement("Concert", OptionSelected), 
        new OptionsRadioElement("Movie", OptionSelected), 
        new OptionsRadioElement("Exhibition", OptionSelected), 
        new OptionsRadioElement("Sport", OptionSelected) 
       } 

      } 
     }; 
    } 

    private void OptionSelected() 
    { 
     Console.WriteLine("Selected {0}", optionsGroup.Selected); 
    } 


    public void SetData(MyData data) 
    { 
      switch(data.Option) 
      { 
       case "Concert: 
        optionsGroup.Selected = 0; 
        break; 
       case "Movie": 
        optionsGroup.Selected = 1; 
        break; 
        //And so on.... 
       default: 
        optionsGroup.Selected = 0; 
        break; 
      } 
      nameField.Value = data.Name; 
      ReloadData(); 

    } 
} 
3

很容易,分配中間值變量:

Section s; 
SomeElement e; 

return new RootElement ("Foo") { 
    (s = new Section ("...") { 
     (e = new StringElement (...)) 
    }) 
}; 
+0

,如果你有什麼渲染出數據庫中的元素,如http://stackoverflow.com/questions/14866188/monotouch-dialog-generate-from-db-and-retain-values? – BRogers 2013-02-14 01:09:30

相關問題