heightForRowAtIndexPath только для одного раздела? - PullRequest
0 голосов
/ 06 июля 2010

Вот проблема, с которой я сейчас сталкиваюсь:

У меня есть много UITableView с двумя разделами в каждом (только один отображается в любое время, по требованию). В первом разделе есть 3 ячейки, размер которых может быть изменен. Из-за этого я использую heightForRowAtIndexPath.

Во втором разделе может быть до 3000 ячеек, причем все используют высоту по умолчанию, равную 44 точкам.

Мой heightForRowAtIndexPath определяет, обрабатывает ли он ячейку из раздела 1 или из раздела 2, а затем либо измеряет (раздел 1), либо сразу возвращает значение по умолчанию (44, раздел 2).

При использовании этого метода отображение больших таблиц занимает некоторое время, так как heightForRowAtIndexPath является проблемой производительности в подобных случаях (более чем около 1000 ячеек).

Мой вопрос: Есть ли способ изменить размеры только 3 ячеек, представленных в первом разделе? Любой способ, возможно, заставить вызывать heightForRowAtIndexPath только для indexPath.section == 0?

В случае, если это что-то меняет, я использую сгруппированное табличное представление.

Спасибо.

Ответы [ 2 ]

10 голосов
/ 06 июля 2010

heightForRowAtIndexPath будет вызываться, если это реализовано в вашем делегате.Если вы хотите изменить только значения в первом разделе, просто используйте простой оператор if.Это может выглядеть так:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
    // Test to see what section you're in
    if ([indexPath section] == 0) {
        // return the height for the first section
    } else {
        // return the height for everything other than the first section
    }
}

Приветствия.

0 голосов
/ 06 июля 2010

Почему бы просто не использовать 2 табличных представления - одно для вашего верхнего раздела, а другое для второго?

Вы можете либо назначить каждому UITableView отдельный делегат, либо, если они совместно используют делегата, вы можете немедленно вернуться из heightForRowAtIndexPath для нижнего UITableView.

Я бы, вероятно, назначил каждому из них разных делегатов, чтобы избежать частых переключений в методах делегатов, чтобы выяснить, в каком разделе вы находитесь.

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