我正在使用MonoTouch(C#)构建iPhone应用程序。我当前的视图有一个分段控件有三个选项。根据选择的段,我想显示与段相关的数据。数据很可能需要滚动。我的问题是,我应该用什么控制来实现这个目标?我使用三个ScrollView控件吗?如果是这样,我如何根据选定的段显示/隐藏每个控件?
谢谢!
答案 0 :(得分:0)
我遇到过这样的情况。简而言之,我使用了一个UITableView
和UITableSource
。当用户选择一个段时,相应的数据源将替换为与该特定段对应的数据源,并重新加载该表(在大多数情况下为tableView.ReloadData())。
如果例如“Segment A”包含纯文本行而“Segment B”包含text + image行,则可能会有点复杂。在这种情况下,您需要在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#吗?