Вы получите только пять предметов, если tableView:numberOfRowsinSection:
вернет 5
. Это простой ответ на ваш вопрос, но я вижу здесь другие проблемы. Мне интересно, почему у вас есть этот тест: row < recentItems.count
. Это тот же массив, что и [ItemsController sharedItemsController].count
? Вам действительно нужно использовать один и тот же массив для обоих методов.
(Кроме того, это не синтаксическая ошибка, но вы не должны использовать синтаксис свойства для вещей, которые не объявлены как свойства. Вместо этого вы должны написать [recentItems count]
.)
Меня также смущает код, который вы используете для настройки ячейки. Клетки предназначены для повторного использования. То есть вы создаете одну ячейку, а затем каждый раз переконфигурируете ее при реализации tableView:cellForRowAtIndexPath:
. Ваш код создает ячейку для каждого элемента в вашем списке. Это очень неэффективно для памяти и, вероятно, приведет к сбою вашей программы из-за недостатка памяти на iPhone, если вы будете хранить в памяти много ячеек, подобных этой.
Рекомендуемый подход - позвонить dequeueReusableCellWithIdentifier:
. Если это возвращает nil
, то вы настраиваете ячейку, используя инициализатор initWithFrame:reuseIdentifier:
. Табличное представление очень умное, и будет просить вас перерисовать ячейку только тогда, когда это необходимо.
Твой recentCellData
словарь мне тоже очень не по себе. Что если вы вставите элемент после элемента с ключом @"2"
? Все элементы с ключом @"3"
должны быть сдвинуты на один элемент вправо, чтобы работать так, как вы ожидаете. Это тонна бухгалтерии, которая мне кажется ненужной. Если вам действительно нужно что-то подобное - и, чтобы быть ясным, я не думаю, что вам это нужно - почему бы вам не использовать NSMutableArray
, который намного проще в использовании?