Я понимаю, что это уже было дан ответ, но я чувствую конец, чтобы фактически объяснить, что здесь происходит, а не лаять какой-то код.
Первое, что происходит с прототипом ячеек, не показывают, сколько ячеек будет отображаться. Когда вы устанавливаете количество статических ячеек, сколько будет отображаться, динамические ячейки - это чистые сланцы. Вы можете использовать их для создания 1 динамической ячейки с держателем места для изображения и держателем места для фрагмента текста. Тогда вы скажите TableView, сколько строк вы хотите, и вы получите ссылку на многоразовую ячейку, вызвав строку:
[tblView dequeueReusableCellWithIdentifier:@" <id> "];
Затем вы должны установить изображение и текст соответствующим образ на возвращаемую клетку.
Что вы делаете, это создание X «Пустых сланцев» со значениями по умолчанию и не переписывание этих значений. То, как я упомянул, было разработано по причинам производительности и причинам использования памяти. То, как я упоминал, имеет один экземпляр экземпляра в памяти, который используется повторно, в то время как у вас есть X в памяти, все из которых используются один раз.
Во-вторых, причина, по которой вы видите пустые строки, заключается в том, что в табличном представлении, не использующем сгруппированный стиль, tableView будет отображать столько строк, сколько в пределах границ, которые вы ему дали. Независимо от того, сколько вы говорите, чтобы отображать.
Причина этот код:
self.tableView.tableFooterView = [[UIView alloc] init];
удаляет пустые строки происходит потому, что сноска будет добавлена после последней строки с содержанием, и Tableview не будет отображать любые строки, пустые или иным образом после этой точки.
Надеюсь, это поможет.
Это помогло понять. В представлении производительности похоже, что я сделаю одну ячейку прототипа и сконфигурирую остальные по коду. – jerik