Прежде всего, это будет течь, как сумасшедший. Вы создаете ячейки и удаляете их из очереди, но никогда не выпускаете их. Вы просто создаете совершенно новую ячейку каждый раз, когда ячейка запрашивается. Нет причин для воссоздания ячейки, если вы удаляете ее из очереди, и наоборот. Что еще более важно, вы создаете столько ячеек, сколько у вас строк в логической таблице. Это съест всю вашу память очень быстро.
Когда вы удаляете ячейку из очереди, вам нужно проверить, подходит ли ей размер кадра, и повторно использовать его, если он есть. Если это не так, то вам нужно освободить ячейку и создать другую.
Во-вторых, таблица не будет запрашивать новые ячейки, пока вы не прокрутите существующие ячейки за пределы экрана. Вот почему ваши клетки не меняются, пока вы не прокрутите. Это ожидаемое поведение таблицы.
Моя постоянная рекомендация для любого умеренно сложного вида - использовать разные пары вид-контроллер / вид для каждой ориентации. Это похоже на большую работу, но обычно я считаю, что на самом деле это занимает меньше времени, и им легче управлять. В этом случае наличие двух отдельных таблиц, вероятно, избавит вас от многих неприятностей.