#iphone #cocoa-touch
#iPhone #cocoa-touch
Вопрос:
У меня есть простой UITableView с двумя разделами. У каждого раздела есть заголовок, который отображается правильно.
Во втором разделе в его заголовке есть UIButton (а также UILabel) — представление заголовка раздела загружается из xib-файла — опять же, он отлично просматривается, и кнопка реагирует на нажатие и вызывает мое IBAction.
В каждой ячейке таблицы в этом разделе также есть кнопка. При нажатии на одну из этих кнопок я обновляю текст в кнопке в заголовке раздела с помощью количества. Для фона каждая ячейка таблицы представляет контакт, и нажатие кнопки в данной ячейке добавляет этот контакт в список, а нажатие кнопки в заголовке раздела выполнит действие со всеми контактами в списке.
Суть в том, что при первом отображении tableview нажатие кнопки в ячейках корректно обновляет текст кнопки заголовка раздела сразу. Как только я прокручиваю таблицу, даже немного, и нажимаю кнопки, текст кнопки заголовка раздела больше не обновляется.
Если я произвожу жесткую прокрутку таблицы вверх таким образом, что заголовок раздела ударяется о верхнюю часть или что-то подобное, метка кнопки заголовка раздела внезапно обновляется, как будто события перерисовки были поставлены в очередь и внезапно выпущены.
Я попытался выполнить обновление в главном потоке, в блоке асинхронной отправки, вызвав setNeedsDisplay / Layout и т.д. Он отказывается обновляться, если я не переверну таблицу.
Вызов reloadData в таблице после обновления текста кнопки работает, но это кажется ужасно тяжелым.
Спасибо за любую информацию…
Код, обновляющий текст кнопки:
NSString *l = NSLocalizedString(@"INVITE_LABEL", nil);
NSString *label = [NSString stringWithFormat:l, [invitedEmails count]];
[inviteSelectedButton setTitle:label forState:UIControlStateNormal];
Вызывая это из IBAction события нажатия кнопки просмотра таблицы. Если я добавлю к этому коду суффикс с:
[self.viewController.addressBookTable reloadData];
приведенный выше код работает сразу же каждый раз.
Комментарии:
1. Возможно, опубликуйте какой-нибудь код, чтобы мы могли видеть, о чем вы говорите.
Ответ №1:
У меня уже были подобные проблемы с кнопками внутри табличных представлений — ячеек или заголовков. В моем случае всегда была ситуация, когда, хотя я считал, что правильно настраиваю желаемый вид кнопки с помощью прокрутки или перезагрузки таблицы, кнопка фактически заменялась новым экземпляром. Не вдаваясь в подробности, моим решением было создать пользовательскую кнопку, которая классифицировала UIButton как подкласс и соответствующим образом реагировала на мои действия, вызывая методы непосредственно у отправителя (id) или публикуя UINotifications.
Я не уверен, поможет ли это вам с вашей проблемой, но, возможно, это приведет к решению.