private UITableViewCell GetSegmentControlCell(UITableView tableView, EntityTableViewModel model)
        {
            var cell = tableView.DequeueReusableCell("SegmentControlCell") as EntitySegmentControlCell;

            cell.Label.Text = model.Label;

            var segmentModel = model.Value as SegmentControlModel;

            cell.SegmentControl.RemoveAllSegments();

            int i = 0;

            foreach (var segment in segmentModel.Model)
            {
                cell.SegmentControl.InsertSegment(segment, i++, false);
            }

            cell.SegmentControl.SelectedSegment = segmentModel.Selected;
            cell.SegmentControl.ValueChanged   += (sender, e) =>
            {
                segmentModel.Selected = Convert.ToInt32(((UISegmentedControl)sender).SelectedSegment);
            };


            return(cell);
        }
        private UITableViewCell GetLabelCell(UITableView tableView, EntityTableViewModel model)
        {
            var cell = tableView.DequeueReusableCell("LabelCell") as EntityLabelCell;

            cell.Label.Text        = model.Label;
            cell.LabelChoosed.Text = model.Value as string;

            return(cell);
        }
        private UITableViewCell GetTextFieldCell(UITableView tableView, EntityTableViewModel model)
        {
            var cell = tableView.DequeueReusableCell("TextFieldCell") as EntityTextFieldCell;

            cell.Label.Text     = model.Label;
            cell.TextField.Text = model.Value as string;


            cell.TextField.AddTarget((sender, e) =>
            {
                model.Value = ((UITextField)sender).Text;
            }, UIControlEvent.EditingChanged);

            return(cell);
        }
        private UITableViewCell GetPickerCell(UITableView tableView, EntityTableViewModel model)
        {
            var cell = tableView.DequeueReusableCell("PickerViewCell") as EntityPickerViewCell;

            var pickerModel = model.Value as UIFloorballPickerViewModel;

            pickerModel.SelectionChanged += PickerModel_SelectionChanged;

            cell.PickerView.Model  = pickerModel;
            cell.PickerView.Hidden = true;
            cell.PickerView.TranslatesAutoresizingMaskIntoConstraints = false;


            return(cell);
        }
        private UITableViewCell GetDatePickerCell(UITableView tableView, EntityTableViewModel model)
        {
            var cell = tableView.DequeueReusableCell("DatePickerCell") as EntityDatePickerCell;

            cell.DatePicker.Hidden = true;
            cell.DatePicker.TranslatesAutoresizingMaskIntoConstraints = false;

            cell.DatePicker.ValueChanged += (sender, e) =>
            {
                EntityPresenter.Model[0][SelectedRow].Value = iOSHelper.NSDateToDateTime((sender as UIDatePicker).Date).Date.ToString("yyyy-MM-dd");

                TableView.ReloadRows(new NSIndexPath[] { NSIndexPath.FromRowSection(SelectedRow, 0) }, UITableViewRowAnimation.None);
            };

            return(cell);
        }
        void ChangePickerVisibility(UIView view, bool isVisible, UIView view2 = null, EntityTableViewModel model = null)
        {
            TableView.BeginUpdates();
            TableView.EndUpdates();
            if (isVisible)
            {
                view.Alpha = 0.0f;
            }
            UIView.Animate(0.25, () => { view.Alpha = (isVisible ? 1.0f : 0.0f); }, () =>
            {
                view.Hidden = !isVisible;

                if (view2 != null)
                {
                    model.IsVisible = !model.IsVisible;

                    ChangePickerVisibility(view2, model.IsVisible);
                }
            });
        }
        bool ChangePreviousVisibility(UITableView tableView, int previouslySelectedRow, UIView selectedCell, EntityTableViewModel selectedModel)
        {
            if (previouslySelectedRow != -1 && previouslySelectedRow != SelectedRow)
            {
                previouslySelectedRow++;

                var previousModel = EntityPresenter.Model[0][previouslySelectedRow];

                previousModel.IsVisible = false;

                if (previousModel.CellType == TableViewCellType.Picker)
                {
                    var cell = tableView.CellAt(NSIndexPath.FromRowSection(previouslySelectedRow, 0)) as EntityPickerViewCell;

                    ChangePickerVisibility(cell.PickerView, previousModel.IsVisible, selectedCell, selectedModel);

                    return(true);
                }
                else if (previousModel.CellType == TableViewCellType.DatePicker || previousModel.CellType == TableViewCellType.TimePicker || previousModel.CellType == TableViewCellType.DateAndTimePicker)
                {
                    var cell = tableView.CellAt(NSIndexPath.FromRowSection(previouslySelectedRow, 0)) as EntityDatePickerCell;

                    ChangePickerVisibility(cell.DatePicker, previousModel.IsVisible, selectedCell, selectedModel);

                    return(true);
                }
            }

            return(false);
        }