2012-03-26 6 views
2

У меня есть UITableView с несколькими разделами, каждая из которых имеет несколько ячеек с дискретными элементами управления UIStepper. При нажатии и удержании каждой ячейки UIStepper компаньон UILabel обновляется с текущим значением UIStepper, если требуется.Обновление заголовка заголовка раздела UITableView при использовании непрерывного повторения 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, чтобы остановить непрерывные касания, зарегистрированные. Это означает, что общее количество в заголовке синхронно с увеличением значений в ячейках этого раздела требует, чтобы пользователь продолжал касаться элемента управления одним нажатием за раз, а не нажатием и удержанием.

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

ответ

0

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

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

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

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

Смежные вопросы