Xamarin.ios 如何从输入字段中获取字符串值?
我正在尝试使用MonoTouch和DialogViewController为iOS实现一个设置对话框 下面的类包含一些公共属性,以及为其获取DialogViewController的方法 问题是,当视图消失时,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
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;
}
}
}