2011-12-28 11 views
0

私はMonoTouch(C#)で構築しているiPhoneアプリを持っています。私の現在のビューには、3つのオプションを持つ分割コントロールがあります。選択されたセグメントに応じて、そのセグメントに関連するデータを表示する必要があります。データにはスクロールが必要な可能性が最も高いです。私の質問は、これを達成するためにどのようなコントロールを使用すべきですか? 3つのScrollViewコントロールを使用しますか?その場合、選択したセグメントに基づいて各コントロールを表示/非表示にするにはどうすればよいですか?モノラルで選択したセグメントコントロールに基づいて異なるデータを表示

ありがとうございました!

答えて

0

私はこのような状況に遭遇しました。要するに、私は単一のUITableViewUITableSourceでそれをしました。ユーザーが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#を愛していないのですか?

関連する問題