Вы заполняете ячейку, только если она не найдена в очереди ячеек таблицы. Если он найден, вы не перезаписываете его содержимым для этого значения indexPath.row.
Попробуйте вместо этого:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Maledetta"];
if (cell == nil) {
UIViewController *c;
if (!IS_IPAD) c = [[UIViewController alloc] initWithNibName:@"NewsRow" bundle:nil];
else c = [[UIViewController alloc] initWithNibName:@"NewsRow_ipad" bundle:nil];
cell = (NewsRowController*)c.view;
[c release];
}
if ([titleArray count] > 0) {
[(NewsRowController*)cell setCellDataWithName:[titleArray objectAtIndex:indexPath.row]
andDate:[descArray objectAtIndex:indexPath.row]
day:[dayArray objectAtIndex:indexPath.row]
month:[monthArray objectAtIndex:indexPath.row]];
}
return cell;
}
Кроме того, проверка [titleArray count], вероятно, избыточна. Вы используете это, чтобы указать количество ячеек в разделе для этой таблицы, верно? Если это ноль, это даже не доберется сюда.