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
を再利用するための推奨パターンはありますか、またはデータが変更されるたびに新しい入力を作成するだけですか?
NSTimerは、この場合には、現実世界の使用状況をシミュレートするために、ただそこに画面が表示され、数秒後にボタンをクリックするユーザーです。私はあなたの解決策を試し、それが機能するかどうかを見てみましょう。 – Timm
あなたのアプローチは私のために凍ったUIにつながります。私は新しい 'Section'を作り直してルートに追加すると思います。 – Timm
いくつかのコードを表示できますか? – Janub