Изменение последовательности iOS 5 в UITableView - переключены viewForHeaderInSection и heightForHeaderInSection - PullRequest
1 голос
/ 18 октября 2011

О, горе мне - iOS 5 сломала мое приложение.

У меня есть UITableView, и до iOS 5 делегаты вызывались в последовательности

  1. viewForHeaderInsection (что позволило мне динамически создавать представление заголовка)
  2. heightForHeaderInSection (который позволил мне настроить скорректированную высоту headerView

Я только что проверил и запустил программу в симуляторе iOS 4.3 и симуляторе iOS 5.0 (и устройстве iOS 5) иточно такой же код вызывается в обратной последовательности в iOS 5. ПОЧЕМУ !!!!

Состояние документов (для tableView: heightForHeadInSection:)

" Особые замечания

До iOS 5.0 табличные представления автоматически изменяли размеры заголовков до 0 для разделов, где tableView: viewForHeaderInSection: возвращал нулевое представление. В iOS 5.0 и более поздних версиях вы должны возвращать фактическую высоту для каждого заголовка раздела в этомmethod. "

Нигде не говорится, что они спокойно изменили последовательность вызовов.

Мой вопросКто-нибудь сталкивался с этим, и какие-либо предложения по решению этого?Я все перекодирую?Мне нужно иметь заголовок переменной высоты, высоту которого я могу определить только при создании headerView.

Ответы [ 2 ]

1 голос
/ 07 ноября 2012

Просто добавьте что-то подобное, чтобы исправить это:

// iOS 5 и более поздние версии по-прежнему ожидают высоту при возврате nil

- (CGFloat) tableView: (UITableView *) tableView heightForHeaderInSection:(NSInteger) раздел {

// Do some check on if this section has a header
if ([navigationSections_[section] hasHeader]) {
    return 0;
} else {
    // This will use the default height
    return tableView.sectionHeaderHeight;
}

}

1 голос
/ 27 октября 2011

да я наблюдаю такое же поведение.Вы создаете представление заголовка в tableView:heightForHeadInSection и повторно используете его в viewForHeaderInsection вместо того, чтобы создавать его дважды.

До версии 5.0 вы должны сделать аналогичную вещь для heightForRowAtIndexPath и cellForRowAtIndexPath, если высотаизвестен только после построения представления.

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