MonoMobile.Views.ListSource.SetSelectionAccessory C# (CSharp) Method

SetSelectionAccessory() protected method

protected SetSelectionAccessory ( UITableViewCell cell, NSIndexPath indexPath ) : void
cell UITableViewCell
indexPath NSIndexPath
return void
		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;
					}
				}
			}
		}
	}