私が疑問に思っていること: UI ウィジェットのようなある種のリストを実装する場合 (ここでは特定のターゲット プラットフォームは想定されていませんが、説明のために C# を使用しています)、事前に選択されたエントリを決定する 3 つの方法を見ることができます。私のリスト。以下のスタブを見てください。3 つの実装にはすべて、項目を直接渡すのではなく、表示する項目を実装に要求するデリゲートがあります。アイデアは、UI 要素が実際に表示されようとしている場合にのみ、アイテムが要求されるということです。
最初の実装には、事前選択された項目を定義できるセッターがあります。
public class ListWidget<T>
{
public Action<IList<T>> GetListItems;
public SetPreselectedItem(T item)
{
this.preselectedItem = item;
}
}
また:
これは、ある時点で、リスト ウィジェットが、認識しているすべての項目をループすることによって、項目を事前に選択する必要があるかどうかを実装に問い合わせるという考えに従います。ここに見られる利点:複数選択が可能になります。
public class ListWidget<T>
{
public Action<IList<T>> GetListItems;
public Action<bool> IsItemPreselected(T item);
}
また:
これは、コンテンツをレンダリングする必要があるときはいつでも、事前に選択された項目の実装を要求しています。
public class ListWidget<T>
{
public Action<IList<T>> GetListItems;
public T GetPreselectedItem();
}
Apple の UIKit を見ると、最初のアプローチを使用しているようです。リストは表示するデータを要求していますが、選択した項目は直接設定されています。セッターと最後のバージョンで見られる問題: リストに項目が存在しない場合でも、任意の値を設定できます。設定する項目が実際にリストに存在するかどうか、追加のチェックが必要です。さまざまなプラットフォームで上記のパターンのすべてのバリエーションを見てきましたが、最善のアプローチがあるかどうか疑問に思っていますか? それとも、それを実装する別のバージョンがありますか?