重用MonoTouch.Dialog元素

时间:2012-03-05 08:35:57

标签: ios xamarin.ios monotouch.dialog

对于动态更改屏幕上显示哪些输入的应用程序,我创建了所有可能的Elements,然后创建一个Section,其中包含了当前数据所需的那些。

例如,如果用户与BooleanElement进行互动,则需要更新表单并相应显示字段。

显然这种模式不起作用,如此测试用例所示:

        var dateEntry = new DateTimeElement("Timestamp", DateTime.Now);

        var section = new Section() { dateEntry };
        var root = new RootElement("Root") { section };
        var dvc = new DialogViewController(root);

        window.RootViewController = dvc;

        NSTimer.CreateScheduledTimer (TimeSpan.FromSeconds (2), delegate {
            var newSection = new Section() { dateEntry };
            dvc.Root.Clear();
            dvc.Root.Add(newSection);
        });

一旦计时器启动,上面的代码会在NullReferenceException中抛出DateTimeElement.FormatDate

我也尝试过不仅重建Section而且重建RootElement,但无济于事。

是否有任何建议的模式可以重用Elements,或者我应该在数据发生变化时创建新的输入?

1 个答案:

答案 0 :(得分:3)

这应该为你做的伎俩,你可以删除NStimer

        this.Root.Remove(section);
        this.Root.Insert(0,UITableViewRowAnimation.Fade,newSection);