对于动态更改屏幕上显示哪些输入的应用程序,我创建了所有可能的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
,或者我应该在数据发生变化时创建新的输入?
答案 0 :(得分:3)
这应该为你做的伎俩,你可以删除NStimer
this.Root.Remove(section);
this.Root.Insert(0,UITableViewRowAnimation.Fade,newSection);