每个UITableViewSection iOS Xamarin的单一选择

时间:2017-09-22 05:56:20

标签: ios objective-c uitableview xamarin.ios multipleselection

我有一个包含2-3个部分的UITableView。我想实现一个功能,可以选择每个部分的单行。

这样的事情: -

enter image description here

我尝试在UITableView上启用多项选择。但它允许我从所有部分中选择多行。我想从每个部分一次只选择一行。

 public override void RowSelected(UITableView tableView, NSIndexPath indexPath)
        {
            var cell = tableView.CellAt(indexPath);


                if (cell.Accessory == UITableViewCellAccessory.None)
                {
                    cell.Accessory = UITableViewCellAccessory.Checkmark;
                }
                else
                {
                    cell.Accessory = UITableViewCellAccessory.None;
                }


            selectedSection = indexPath.Section;

        }
        public override void RowDeselected(UITableView tableView, NSIndexPath indexPath)
        {
            var cell = tableView.CellAt(indexPath);
            cell.Accessory = UITableViewCellAccessory.None;
        }

1 个答案:

答案 0 :(得分:0)

您可以使用列表存储上次选择的每个部分的标记。

 List<NSIndexPath> selectList = new List<NSIndexPath>();
 for(int i = 0; i < tableviewDatasource.Count; i++)
 {
      //initial index 0 for every section
      selectList.Add(NSIndexPath.FromRowSection(0, i));
 }

public override void RowSelected(UITableView tableView, NSIndexPath indexPath)
{
    //anti-highlight last cell
    NSIndexPath lastindex = selectList[indexPath.Section];
    var lastcell = tableView.CellAt(lastindex);
    lastcell.Accessory = UITableViewCellAccessory.None;

    //highlight selected cell
    var cell = tableView.CellAt(indexPath);
    cell.Accessory = UITableViewCellAccessory.Checkmark;

    //update the selected index
    selectList.RemoveAt(indexPath.Section);
    selectList.Insert(indexPath.Section, indexPath);
}

enter image description here