2012-04-06 82 views
0

我想使用MonoTouch和DialogViewController为iOS实现设置对话框。如何从输入字段获取字符串值?

下面的类包含一些公共属性,以及为其获取DialogViewController的方法。

问题是当视图消失时,thisName.Value中的字符串值为空(我当然在文本字段中填充了某些内容)。

为什么?

public class Settings 
    { 
     public string Name { get; set; } 

     public int MagicNumber { get; set; } 

     public bool ThisIsEnabled{ get; set; } 

     public Settings() 
     { 
      var defaults = NSUserDefaults.StandardUserDefaults; 
      Name = defaults.StringForKey ("name"); 
      ThisIsEnabled = defaults.BoolForKey("thisisenabled"); 
      MagicNumber = defaults.IntForKey ("123"); 
     } 

     public UIViewController GetViewController() 
     { 
      var thisBoolean = new BooleanElement ("This boolean", ThisIsEnabled); 
      var thisName = new EntryElement ("Name", "name", Name); 
      thisName.KeyboardType = UIKeyboardType.ASCIICapable; 

      var root = new RootElement ("Options"){ 
       new Section(){thisBoolean,thisName} 
      }; 

      var dv = new DialogViewController (root, true){Autorotate= true}; 
      dv.ViewDissapearing += delegate { 
       ThisIsEnabled = thisBoolean.Value; // <== This works 
       Name = thisName.Value; // <== This is NULL 

       var defaults = NSUserDefaults.StandardUserDefaults; 
       defaults.SetBool (ThisIsEnabled, "thisisenabled"); 
       defaults.SetString (Name, "name"); 
      }; 
      return dv; 
     } 
    } 
} 

回答

0

当前版本的MT.D不会“保存”字段的值,直到用户离开它为止。这可能是你所看到的。

此行为已被fixed,但尚未发布。

+0

有没有什么好的解决方法?我可能住在一个保存按钮。 – 2012-04-06 17:30:17

+0

尝试在获取它的值之前调用元素上的FetchValue()。 – Jason 2012-04-06 18:33:26