Обновление текста заголовка раздела UITableView при использовании непрерывного повторения UIStepper

У меня есть UITableView с несколькими разделами, каждая из которых имеет несколько ячеек с дискретными элементами управления UIStepper. При нажатии и удержании UIStepper в каждой ячейке компаньон UILabel обновляется текущим значением UIStepper по мере необходимости.

Это работает нормально: удерживайте UIStepper, и это увеличивает общее количество, обновляя UILabel при этом.

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

====================
 Section Total: 12
====================
 Cell: 3   | - | + |
--------------------
 Cell: 5   | - | + |
--------------------
 Cell: 4   | - | + |
====================
 Section Total: 9
====================
 Cell: 1   | - | + |
--------------------
 Cell: 2   | - | + |
--------------------
 Cell: 6   | - | + |

Это тоже работает, используя вызов [self.tableView reloadData] ;.

Однако он регистрирует только каждое отдельное прикосновение к UIStepper; появляется вызов reloadData, чтобы остановить регистрацию непрерывных касаний. Это означает, что для синхронизации суммы в заголовке с растущими значениями в ячейках этого раздела пользователю необходимо постоянно прикасаться к элементу управления по одному нажатию за раз, а не нажимать и удерживать.

Есть ли способ перезагрузить текст заголовка одного раздела на протяжении всего «цикла», чтобы он отслеживал увеличение значения, когда пользователь держит палец на элементе управления?


person creednmd    schedule 26.03.2012    source источник


Ответы (1)


Я бы сохранил ссылку на все заголовки разделов, которые у вас есть, и в ваших методах вызова увеличивающегося кода непосредственно в представлении заголовка, вместо того, чтобы полагаться на обновление таблицы, чтобы позаботиться об этом. Существует два основных варианта создания заголовков разделов:

  1. Инициализируйте их все в viewDidLoad и сохраните в коллекции. Затем в tableView:viewForHeaderInSection: верните соответствующий экземпляр для этого раздела из коллекции. Этот вариант лучше всего подходит, если вы заранее знаете, сколько секций у вас будет.

  2. Лениво инициализируйте их в tableView:viewForHeaderInSection: и сохраните в коллекции по номеру раздела. Если у вас много заголовков и вы не хотите хранить их в памяти, если пользователь не прокручивал страницу, то это ваш лучший выбор.

Когда вам нужно обновить заголовок, извлеките его из коллекции и вызовите для него какой-нибудь метод увеличения; если он виден, он немедленно обновится, а если нет, он появится с правильным значением при прокрутке в поле зрения. В идеале эти увеличенные значения сохраняются где-то в объекте модели!

person jszumski    schedule 29.04.2013