Табличное представление


Табличное представление

Табличное представление не знает о том, что его данные изменились.

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

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

Так как мы изменяем информацию источника данных, простейшим способом обновления табличного представления является запрос на повторную загрузку данных. Для этого представлению отправляется сообщение reloadData. При его получении табличное представление запрашивает заново количество секций, заголовки и завершители этих секций, строки данных и т. д.

Измените файл RootViewController.m так, чтобы табличное представление перезагружало свои данные перед отображением. Попробуйте еще раз ввести новый рецепт.

Чтобы протестировать приложение, нажмите кнопку «+» и введите описание нового рецепта в детализированном представлении. Завершив ввод данных, нажмите кнопку Save.

Что теперь происходит в табличном представлении?

Приказывать табличному представлению перезагружать все данные? Это следует делать именно так?

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

Мы не изменили код кнопки отмены. Разве здесь не нужно что-нибудь добавить?

Нет, кнопка отмены просто закрывает AddDrinkViewController. При этом освобождается вся память, связанная с контроллером, а все данные, введенные пользователем в полях, теряются.

В отладчике, когда раскрываю массив drinks и словари?

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

Использовать отладчик? Разве нельзя.

Вывести количество элементов в массиве при помощи NSLog?

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

Почему бы не использовать команду отладчика GDB для просмотра имен в словаре?
  • Дата: 22-12-2014, 17:10

Предыдущие статьи сайта:

Понравилась статья? Ставь лайки, рассказывай друзьям!



Отзывы о статье: Табличное представление

Технологии, секреты и фишки Apple: Iphone, iPad, iPod