私はこのような状況に遭遇しました。要するに、私は単一のUITableView
とUITableSource
でそれをしました。ユーザーが1つのセグメントを選択すると、適切なデータソースがその特定のセグメントに対応するものに置き換えられ、テーブルがリロードされます(ほとんどの場合、tableView.ReloadData())。
"セグメントA"にテキストのみの行が含まれ、 "セグメントB"にテキスト+画像行が含まれていると、少し複雑になることがあります。この場合、UITableSourceのGetCellメソッドでは、データの種類に基づいてどのセルを表示するかを決定するロジックがもう少し必要になります。複雑さを最小限に抑えるために
、私はそれを継承するカスタムインターフェイスおよびジェネリッククラスを作成しました:
interface ITableRow
{
string RowTitle { get; set; }
string RowSubTitle { get; set; }
}
class TableRow<T> : ITableRow
{
public TableRow(string rowTitle, string rowSubtitle, T dataObject)
{
// fill the properties with values here
}
public string RowTitle { get; set; }
public string RowSubTitle { get; set; }
public T DataObject { get; set; }
}
マイデータソースは常にList<ITableRow>
(またはいくつかのケースではDictionary<TSome, ITableRow>
)なので、UITableSource.GetCell
実装は、「知っています毎回各セルに何を割り当てるか。
また、次のコンストラクタを追加して(私は)それを拡張できます。
public TableRow(Func<string, T> rowTitleFunc, Func<string, T> rowSubtitleFunc, T dataObject)
: this(rowTitleFunc(dataObject), rowSubtitleFunc(dataObject), dataObject) {}
この方法では、各列の「のDataObject」に基づいて、各列に異なるデータを表示することができます。
PS(トピック外):iOSでC#を愛していないのですか?