dequeueReusableCellWithIdentifier - лучше юзайте другой метод - dequeueReusableCellWithIdentifier:indexPath и тогда проверка if (cell == Nil) никогда не вызоветься, ячейка всегда есть и соответственно код можно сократить. Лучше использавать свой класс для ячейки, сабкласс от UITableViewCell, так легче ее настроивать, затем просто вызываете reloadData, и таблица перегружаеться. также поставте в storyboard тип таблицы - динамическая