Обновите viewForFooterInSection для делегата didSelectRowAtIndexPath - PullRequest
5 голосов
/ 10 августа 2011

Я показываю список элементов на UITableViewCell в разных разделах.Я создал UITextField в viewForFooterInSection делегат

- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section

Теперь моя проблема в том, что я не хочу показывать viewForFooterInSection каждый раз.Это должно быть ноль / скрыто, пока я не нажму на didSelectRowAtIndexPath для этого конкретного раздела.И UITextField должен отображаться только для этого раздела.

Я запутался, как перезагрузить footerView при нажатии?

Ответы [ 2 ]

7 голосов
/ 11 августа 2011

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

[self.tableView reloadSections:[NSIndexSet indexSetWithIndex:sectionIndex] withRowAnimation:UITableViewRowAnimationNone];

После этого вызова - (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section снова нажимает, где вы можете сохранить логическую переменную и, соответственно, вернуть nil или ваш нижний колонтитул.

- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section
{
    if(conditionSatisfied)
        return myFooterView;
    return nil;
}

НТН,

Акшай

1 голос
/ 10 августа 2011

Самый простой ответ - просто позвонить [tableView reloadData].Хотя это не обеспечивает никакой анимации, я не могу придумать ни одного формально простого способа поддержки анимации в этом случае.Это может быть возможно путем вставки строки в нижней части раздела, которая выглядит как нижний колонтитул, но при этом возникает целый ряд проблем, с которыми мне бы не хотелось иметь дело.

Редактировать : только что нашел, возможно, немного лучший вариант:

[tableView reloadSections:withRowAnimation:].Я понятия не имею, оживит ли это нижний колонтитул или нет, или он даже отправит запрос вашему поставщику данных, но это стоит попробовать.

...