public void ShowFieldsForItem(ISitecoreItem item)
    {
      BeginInvokeOnMainThread(delegate
      {
        this.Title = item.DisplayName;

        this.CleanupTableViewBindingsSync();

        this.fieldsDataSource = new FieldsDataSource();
        this.fieldsTableDelegate = new FieldCellSelectionHandler();


        FieldsDataSource dataSource = this.fieldsDataSource;
        dataSource.SitecoreItem = item;
        dataSource.TableView = this.TableView;


        FieldCellSelectionHandler tableDelegate = this.fieldsTableDelegate;
        tableDelegate.TableView = this.TableView;
        tableDelegate.SitecoreItem = item;

        FieldCellSelectionHandler.TableViewDidSelectFieldAtIndexPath onFieldSelected = 
          delegate (UITableView tableView, IField itemField, NSIndexPath indexPath)
        {
          AlertHelper.ShowLocalizedAlertWithOkOption("Field Raw Value", itemField.RawValue);
        };
        tableDelegate.OnFieldCellSelectedDelegate = onFieldSelected;

        this.TableView.DataSource = dataSource;
        this.TableView.Delegate = tableDelegate;
        this.TableView.ReloadData();
      });
    }
    protected override void CleanupTableViewBindingsSync()
    {
      this.TableView.DataSource = null;
      this.TableView.Delegate = null;

      if (this.fieldsDataSource != null)
      {
        this.fieldsDataSource.Dispose ();
        this.fieldsDataSource = null;
      }

      if (this.fieldsTableDelegate != null)
      {
        this.fieldsTableDelegate.Dispose ();
        this.fieldsTableDelegate = null;
      }
    }