0

MonoTouch と DialogViewController を使用して、iOS の設定ダイアログを実装しようとしています。

以下のクラスには、いくつかのパブリック プロパティと、DialogViewController を取得するメソッドが含まれています。

問題は、ビューが消えると、文字列値thisName.Valueが null になることです (もちろん、テキスト フィールドに何かを入力しました)。

なんで?

    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;
        }
    }
}
4

1 に答える 1

0

MT.D の現在のリリースでは、ユーザーがそこから移動するまでフィールドの値を「保存」しません。これはあなたが見ているものかもしれません。

この動作は修正されていますが、まだリリースされていません。

于 2012-04-06T16:22:50.577 に答える