Xamarin.ios 如何从输入字段中获取字符串值?

Xamarin.ios 如何从输入字段中获取字符串值?,xamarin.ios,monotouch.dialog,Xamarin.ios,Monotouch.dialog,我正在尝试使用MonoTouch和DialogViewController为iOS实现一个设置对话框 下面的类包含一些公共属性,以及为其获取DialogViewController的方法 问题是,当视图消失时,thisName.value中的字符串值为null(我当然在文本字段中填充了一些内容) 为什么? 公共类设置 { 公共字符串名称{get;set;} 公共整数MagicNumber{get;set;} 公共bool ThisIsEnabled{get;set;} 公共设置() { var

我正在尝试使用MonoTouch和DialogViewController为iOS实现一个设置对话框

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

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

为什么?

公共类设置
{
公共字符串名称{get;set;}
公共整数MagicNumber{get;set;}
公共bool ThisIsEnabled{get;set;}
公共设置()
{
var defaults=NSUserDefaults.StandardUserDefaults;
Name=defaults.StringForKey(“名称”);
ThisIsEnabled=defaults.boolforky(“ThisIsEnabled”);
MagicNumber=defaults.IntForKey(“123”);
}
公共UIViewController GetViewController()
{
var thisBoolean=新布尔元素(“thisBoolean”,thisiEnabled);
var thisName=newentryelement(“Name”、“Name”、Name);
thisName.KeyboardType=UIKeyboardType.ascicapable;
var root=新的根元素(“选项”){
新节(){thisBoolean,thisName}
};
var dv=new DialogViewController(root,true){Autorotate=true};
dv.ViewDissapearing+=委托{

ThisIsEnabled=thisBoolean.Value;//当前版本的MT.D将不会“保存”字段的值,直到用户导航离开它。这可能就是您看到的


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

有什么好的解决方法吗?我可能还可以使用“保存”按钮。在获取元素的值之前,请尝试对元素调用FetchValue()。
    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;
        }
    }
}