在Xamarin.iOS中创建分组的UITableview

时间:2015-09-02 05:52:25

标签: ios xamarin

如何在UI表格视图中创建分组。检查图像我想在xamarin.iOS中实现它。

enter image description here

1 个答案:

答案 0 :(得分:3)

您必须创建一个TableSource -Class,它保存您的数据并设置各个部分的标题(它们在iOS中称为部分)。

您需要覆盖以下方法:

    public override string TitleForHeader(UITableView tableView, nint section)
    {
        return SessionGroups == null ? string.Empty : SessionGroups[(int)section].Key;
    }

    public override nint NumberOfSections(UITableView tableView)
    {
        return SessionGroups == null ? 0 : SessionGroups.Count;
    }

    public override nint RowsInSection(UITableView tableview, nint section)
    {
        return SessionGroups == null ? 0 : SessionGroups[(int)section].Count;
    }

    public override string[] SectionIndexTitles(UITableView tableView)
    {
        return SessionGroups == null ? new string[0] : SessionGroups.Select(x => x.Key).ToArray();
    }

您可以找到更多信息here。在“添加索引”和“添加页眉和页脚”部分。

修改

重要的还有数据源结构。你需要像键盘一样的东西(或带有上面链接中显示的列表的字典)。

protected IList<ObservableKeyedList<string, string>> SessionGroups;

// Just override the ItemsSource property (base class we use: MvxStandardTableViewSource)
public new IList<ObservableKeyedList<string, string>> ItemsSource
{
    get { return SessionGroups; }
    set
    {
        SessionGroups = value;
        ReloadTableData();
    }
}

ObservableKeyedList的第一个字符串是您的部分/组的键。第二个字符串是您要在UI上显示的值:第二个字符串也可以是具有不同属性的模型。

所以你只需要在上面的结构中对你的数据进行排序/分组,并设置你的UiTableSource的ItemsSource ..那就是=)

继承我们使用的ObservableKeyedList:

public class ObservableKeyedList<TKey, TItem> : ObservableCollection<TItem>
    {
        public TKey Key { protected set; get; }

        public ObservableKeyedList(TKey key, IEnumerable<TItem> items) : base(items)
        {
            Key = key;
        }

        public ObservableKeyedList(IGrouping<TKey, TItem> grouping) : base(grouping)
        {
            Key = grouping.Key;
        }
    }