cellForRowAtIndexPath не вызывается для всех разделов - PullRequest
5 голосов
/ 29 марта 2012

У меня есть UITableView, который имеет пять разделов. Так же, как заголовок описывает, cellForRowAtIndexPath вызывается только для первых четырех. Все соединения были сделаны относительно источника данных и делегата. Кроме того, мой numberOfSectionsInTableView явно возвращает 5. Распечатка количества разделов из cellForRowAtIndexPath показывает правильное число, подтверждая тем самым, что cellForRowAtIndexPath просто не вызывается для всех разделов. Что на земле происходит? Я довольно тяжело искал ответ на этот вопрос, но не смог его найти. Если это уже было дано, пожалуйста, прости меня и укажи мне правильное направление.

Моя ячейкаForRowAtIndexPath:

- (UITableViewCell *)tableView:(UITableView *)theTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [theTableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }

    switch (indexPath.section) {
        case 0:
            cell.textLabel.text = ticket.description;
            break;
        case 1:
            cell.textLabel.text = ticket.ticketStatus;
            break;
        case 2:
            cell.textLabel.text = ticket.priority;
            break;
        case 3:
            cell.textLabel.text = ticket.customerOfficePhone;
            break;
        case 4: {
            //This never ever gets executed
            Comment *comment = [ticket.comments objectAtIndex:indexPath.row];
            cell.textLabel.text = comment.commentContent;
            break;
        }
    }

    return cell;
}

Мой номер секции объявлений в таблице:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return 5;
}

Мой номер раздела:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    NSInteger numberOfRows;

    if (section == 4) {
        numberOfRows = [ticket.comments count];
    }
    else {
        numberOfRows = 1;
    }

    return numberOfRows;
}

Любые предложения приветствуются. Заранее спасибо.

Ответы [ 2 ]

5 голосов
/ 30 марта 2012

Ах-ха!Я понял.Я забыл, что жестко закодировал фрейм для своего табличного представления и добавил его как подпредставление с отключенной прокруткой к представлению прокрутки.К сожалению, и представление прокрутки, и представление таблицы были слишком малы с точки зрения высоты, чтобы вместить пятый раздел, что, я полагаю, было причиной вызова cellForRowAtIndexPath для всех разделов, кроме пятого.Перестройка высоты моего вида таблицы и прокрутки, чтобы она была немного больше, решила мою проблему.

0 голосов
/ 29 марта 2012

Считайте это комментарием.На самом деле я не могу сделать все это в комментарии.

РЕДАКТИРОВАТЬ:

Для [ticket.comments count]; не ноль означает, то что такое счетчик ?.Проверьте условие if в вашем методе cellForRowAtIndexPath: для печати ticket.comments только для массива if section == 4 следующим образом.

if(indexPath.section == 4){

NSLog(@"Ticket Array:%@",ticket.comments);

}

И еще вопрос:

Что такое ticket.comments на самом деле?Если это массив, то это объект "Comment" или что-то еще?Если он имеет comment object, попробуйте это в случае 4 .

case 4:
         {
            Comment *comment = (Comment *)[ticket.comments objectAtIndex:indexPath.row];
            cell.textLabel.text = comment.commentContent;
            break;
         }

Я надеюсь, что этот комментарий поможет вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...