protected override void SetSelectionAccessory(UITableViewCell cell, NSIndexPath indexPath)
{
var sectionData = GetSectionData(0);
cell.Accessory = SelectionAction == SelectionAction.Custom || SelectionAction == SelectionAction.None ? UITableViewCellAccessory.None : cell.Accessory;
if (SelectionAction != SelectionAction.NavigateToView)
{
cell.Accessory = sectionData != null && sectionData.Count > 1 ? cell.Accessory : UITableViewCellAccessory.None;
}
base.SetSelectionAccessory(cell, indexPath);
if (IsSelectable && SelectionAction != SelectionAction.None)
{
var selectedIndex = sectionData.IndexOf(SelectedItem);
UIView selectedAccessoryView = SelectedAccessoryViews.Count > 0 ? SelectedAccessoryViews[cell] : null;
UIView unselectedAccessoryView = UnselectedAccessoryViews.Count > 0 ? UnselectedAccessoryViews[cell] : null;
if (selectedAccessoryView != null)
{
cell.AccessoryView = selectedIndex == indexPath.Row ? selectedAccessoryView : unselectedAccessoryView;
}
else
{
cell.Accessory = selectedIndex == indexPath.Row ? UITableViewCellAccessory.Checkmark : UITableViewCellAccessory.None;
}
if (IsMultiselect && SelectedItems != null)
{
if (!SelectedItems.Contains(SelectedItem))
{
cell.AccessoryView = null;
cell.Accessory = UITableViewCellAccessory.None;
}
foreach (var item in SelectedItems)
{
selectedIndex = sectionData.IndexOf(item);
if (selectedIndex != indexPath.Row) continue;
if (selectedAccessoryView != null)
{
cell.AccessoryView = selectedAccessoryView;
}
else
cell.Accessory = UITableViewCellAccessory.Checkmark;
}
}
}
}
}