12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- using System;
- using Xamarin.Forms;
- using Xamarin.Forms.Platform.iOS;
- using System.Collections.Generic;
- using UIKit;
- using System.Linq;
- using Foundation;
- using System.Windows.Input;
- namespace InABox.Mobile
- {
- public class DropDownMenuSource : UITableViewSource
- {
- // Global variable for the secondary toolbar items and text to display in table row
- List<ToolbarItem> _tableItems;
- string[] _tableItemTexts;
- ICommand[] _tableItemActions;
- string CellIdentifier = "TableCell";
- public DropDownMenuSource(List<ToolbarItem> items)
- {
- //Set the secondary toolbar items to global variables and get all text values from the toolbar items
- _tableItems = items;
- _tableItemTexts = items.Select(a => a.Text).ToArray();
- _tableItemActions = items.Select(a => a.Command).ToArray();
- }
- public override nint RowsInSection(UITableView tableview, nint section)
- {
- return _tableItemTexts.Length;
- }
- public override UITableViewCell GetCell(UITableView tableView, NSIndexPath indexPath)
- {
- UITableViewCell cell = tableView.DequeueReusableCell(CellIdentifier);
- string item = _tableItemTexts[indexPath.Row];
- if (cell == null)
- {
- cell = new UITableViewCell(UITableViewCellStyle.Default, CellIdentifier);
- }
- cell.TextLabel.Text = item;
- return cell;
- }
- public override nfloat GetHeightForRow(UITableView tableView, NSIndexPath indexPath)
- {
- return 56; // Set default row height.
- }
- public override void RowSelected(UITableView tableView, NSIndexPath indexPath)
- {
- //Used command to excute and deselct the row and removed the table.
- var command = _tableItems[indexPath.Row].Command;
- command.Execute(_tableItems[indexPath.Row].CommandParameter);
- tableView.DeselectRow(indexPath, true);
- tableView.RemoveFromSuperview();
- }
- }
- }
|