DequeueReusableCell in Monotouch causes cells to rearrange when scrolling
===

I am using the Monotouch.Dialog class to populate a UITableView. I am using a custom cell and as you can see the code in the Element that gets the cell is as follows:

    public override UITableViewCell GetCell (UITableView tv)
    {
	var cell = tv.DequeueReusableCell(_key) as FoodItemCell;
		  	
	if (cell == null)
       cell = new FoodItemCell(_foodItem, _key);
	else
	   cell.UpdateCell(_foodItem);

	return cell;
    }

I got this code from a Miguel De Icaza post online that suggest the proper way to create custom cells for the MonoTouch.Dialog.

The Data is displayed appropriately but when I have a long list and I scroll up and down quickly, the cells swap places in a random unpredictable fashion. So the cell in row in may end up in row 4 when I am finished scrolling.

When I use the following code this problem is solved but as you can see I am not dequeueing cells and this may create memory issues.

    private FoodItemCell _currentCell;

    public override UITableViewCell GetCell (UITableView tv)
    {
        if(_currentCell == null)
        {
            _currentCell = new FoodItemCell(_foodItem, _key);
            return _currentCell;
        }
        else
        {
            return _currentCell;
        }
    }

Does anyone have an idea how I can properly dequeue the cells and not have the scrolling issue?