Как стать автором
Обновить

Добавление настроек приложения в Settings

Время на прочтение3 мин
Количество просмотров12K
Если у вас есть неигровое приложение (в игровых принято размещать настройки в самом приложение, хотя нет правил без исключений) с некоторым количеством настроек, то вместо того, чтобы реализовывать выбор и хранение настроек в самом приложении можно добавить их в приложение «Настройки/Settings» самого телефона, причем делается это очень быстро и легко.

Image Hosted by ImageShack.us

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

Если описать весь процесс в двух словах, то надо сделать следующее:
  • Добавить в проект набор файлов Settings.bundle
  • Описать в файле Root.plist все необходимые элементы интерфейса окна настроек
  • Добавить в проект объект типа NSUserDefaults и получить из него все настройки

Теперь все по порядку и более подробно. Для добавления всех необходимых файлов в ваш проект необходимо зайти в меню File -> New -> New file и там выбрать Resource -> Settings Bundle:

Image Hosted by ImageShack.us

После этого в списке файлов вашего проекта появится новая папка Settings.bundle, состоящая из файла Root.plist и папки en.lproj. Именно этот файли и содержит всю информацию, на основании которой будет оформлен раздел настроек вашего приложения в Settings, а папка нужна для реализации локализации приложения под разные языки.
Файл Root.plist представляет из себя просто список элементов интерфейса с их свойствами, из которых будет состоять ваше окно настроек. По умолчанию он выглядит так:

Image Hosted by ImageShack.us

Если сейчас откомпилировать приложение, то в Settings появится строчка с именем приложения, после выбора которой появится окно, состоящее из заголовка, текстового поля, переключателя и слайдера (ползунка). Расположены они в таком же порядке в каком идут в файле. Добавляя, удаляя и меняя местами строчки в файле можно настроить внешний вид окна настроек в Settings.

Теперь подробнее про основные элементы интерфейса и их свойства.

У всех элементов есть свойство Type — определяет тип элемента, у всех элементов кроме Slider есть свойство Title — заголовок элемента интерфейса, у всех элементов, кроме Group есть свойство Identifier — определяет идентификатор элемента по которому к нему в последствии можно будет обращаться.
Список уникальных для каждого элемента свойств:

Group — имеет только два свойства Title и Type и нужен лишь для создания надписей и визуального разделения настроек на группы.

Text Field
  • Autocapitalization Style — автокапитализация текста (отключена, начало предложений, каждое слово, все буквы заглавные)
  • Autocorrection Style — коррекция ошибок в тексте
  • Default Value — значение текстового поля по умолчанию
  • Text Field Is Secure — поле для ввода пароля
  • Keyboard Type — тип клавиатуры для этого поля (алфавит, цифры и знаки, цифры, URL, eMail)

Toggle switch (переключатель)
  • Default Value — значение по умолчанию (yes/no)
  • Value for OFF — значение, которое будет возвращать элемент в случае ВЫКЛ (в случае если нужно получать значение отличное от NO, например 234)
  • Value for ON — значение, которое будет возвращать элемент в случае ВКЛ (в случае если нужно получать значение отличное от YES, например 143)

Slider
  • Default Value — значение по умолчанию
  • Maximum Value- максимальное допустимое значение
  • Minimum Value — минимальное допустимое значение
  • Max Value Image Filename — изображение возле максимума
  • Min Value Image Filename — изображение возле минимума

Multi value
  • Titles — массив надписей в таблице выбора
  • Values- значение возвращаемое при выборе каждого из вариантов
  • Default Value- значение по умолчанию

Отдельно хочется описать процесс добавления изображений к элементу Slider. Простое перетаскивание файлов изображений в ваше приложение тут не сработает, так как после компиляции файлы приложения будут в одной «песочнице», а файлы приложения Settings в другой. Для того, чтобы добавить файлы в «песочницу» приложения Settings необходимо зайди в Finder, найти папку с вашим приложением, там будет элемент Settings.bundle, нажать на нем правой кнопкой и выбрать Show Package Contents

Image Hosted by ImageShack.us

Откроется папка с уже знакомыми нам файлами, именно в нее и нужно скопировать файлы изображений.

Теперь. когда внешний вид окна настроек создан осталось только получить эти настройки из приложения. Для этого необходимо создать объект типа NSUserDefaults, присвоить ему данные настроек приложения и получать значения эти настроек по ключам, которые были указаны в свойстве Identifier каждой из настроек.

 NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    text = [defaults objectForKey:@"textField"];

Работает так же и обратный процесс, то есть можно из приложения изменить настройки и сохранить их:

 NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
   [defaults setValue:text forKey:@"textField"]; 

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

Image Hosted by ImageShack.us
Image Hosted by ImageShack.us

Скачать исходник приложения
Теги:
Хабы:
Всего голосов 29: ↑24 и ↓5+19
Комментарии20

Публикации

Истории

Ближайшие события

15 – 16 ноября
IT-конференция Merge Skolkovo
Москва
22 – 24 ноября
Хакатон «AgroCode Hack Genetics'24»
Онлайн
28 ноября
Конференция «TechRec: ITHR CAMPUS»
МоскваОнлайн
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань