public ComparableTableViewSource(ComparableTableView tableView, ComparableModel comparable, UIViewController controller)
 {
     _controller = controller;
     _comparable = comparable;
     _tableView  = tableView;
     TextFields  = new List <UITextField>();
 }
        private void Initialize(int comparisonId)
        {
            ComparisonId         = comparisonId;
            Comparison           = DataService.GetComparison(comparisonId);
            View.BackgroundColor = UIColor.White;

            // add tableview
            _tableView             = new ComparableTableView(new RectangleF(0, 0, View.Frame.Width, View.Frame.Height), UITableViewStyle.Grouped, Comparable, this);
            _tableView.OnEditUnit += (sender, args) =>
            {
                _pickerVisible = true;
                if (_keyboardVisible)
                {
                    _unitPicker.Frame = new RectangleF(0, View.Frame.Height - _unitPicker.Frame.Height, View.Frame.Width, 216);
                    _tableView.Frame  = new RectangleF(0, 0, View.Frame.Width, View.Frame.Height - _unitPicker.Frame.Height);
                }
                else
                {
                    UIView.Animate(0.3, () =>
                    {
                        _unitPicker.Frame = new RectangleF(0, View.Frame.Height - _unitPicker.Frame.Height, View.Frame.Width, 216);
                        _tableView.Frame  = new RectangleF(0, 0, View.Frame.Width, View.Frame.Height - _unitPicker.Frame.Height);
                    }, () => {
                        _tableView.ScrollToActiveRow();
                    });
                }
            };
            _tableView.OnProductNameChanged += (sender, args) =>
            {
                _navigationItem.Title = string.IsNullOrEmpty(_tableView.Product) ? "Product" : _tableView.Product;
            };
            _tableView.OnKeyboardDone += (sender, args) =>
            {
                if (_pickerVisible)
                {
                    _pickerVisible    = false;
                    _unitPicker.Frame = new RectangleF(0, 460, 320, 216);
                }
                _tableView.ResignTextFieldAsFirstResponder();
            };

            View.AddSubview(_tableView);

            // add unit picker
            _unitPicker = new UnitPicker(Comparison.UnitTypeId, new RectangleF(0, 460, 320, 216));
            _unitPicker.OnSelectionChanged += (sender, args) =>
            {
                _tableView.SetUnitText(_unitPicker.SelectedUnit.FullName);
            };

            View.AddSubview(_unitPicker);
        }
 public ComparableTableViewSource(ComparableTableView tableView, UIViewController controller) : this(tableView, null, controller)
 {
 }