IOS Как обновить работающее приложение, когда пользователь выбирает другую тему (т. Е. Принудительно перезагружать контроллеры представления с различными файлами пера) - PullRequest
1 голос
/ 20 августа 2011

Если ваше приложение поддерживает несколько тем пользовательского интерфейса, имея несколько nib-файлов для своих контроллеров представлений, то когда пользователь изменяет тему через меню настроек в приложении, каковы ваши варианты, чтобы заставить контроллеры представлений запущенного приложения перезагружать свои представленияс другим файлом пера?

Я уже знаком с основами, т. е. вы можете условно загрузить другой файл пера, основываясь на настройке, хранящейся где-то вроде NSUserDefaults.Но после этого, в тот момент, когда пользователь (в приложении) меняет настройку темы, какие у меня есть варианты, чтобы изменения вступили в силу?

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

1 Ответ

1 голос
/ 20 августа 2011

Я думаю, вы подходите к этому неправильно.

Если вы просто меняете цвета и изображения в зависимости от темы, я бы подумал о создании одного xib и изменении цветов и изображений в коде.

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

Изменить свойства намного проще, и вы также можете ввести новый класс для управления темами

например

// psuedo class/code
Theme *theme = [[Theme alloc] initWithStyle:ThemeWarm];

self.view.backgroundColor = theme.backgroundColor;
self.view.logo            = theme.logo;
...