2012-03-05 72 views
3

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

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

显然这种模式不工作,如图这个测试用例:

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

上面的代码抛出DateTimeElement.FormatDate一个NullReferenceException一旦定时器已到。

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

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

回答

3

这应该做的伎俩给你,你可以删除的NSTimer

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

的的NSTimer是只是为了模拟真实世界的使用情况,在这种情况下,点击一个按钮出现在屏幕几秒钟后,用户。我会尝试你的解决方案,看看它是否有效。 – Timm 2012-03-06 16:22:55

+0

你的方法只会导致我冻结的用户界面。我想我会去重新创建一个“Section”并将其添加到根目录。 – Timm 2012-03-10 13:23:20

+0

可以显示一些代码? – Janub 2012-03-10 13:36:11