Итак, чтобы помочь другим, я опубликую, как я (с помощью Apple) решил это.
В обеих корневых и подробно контроллерах просмотра, я добавил в стилях на основе пользовательских настроек:
«Теплые тона», «холодные тона», «кожа» и т.д.Они переводят закодировать так:
switch (styleKey) {
case 0: // BASIC
fontName = @"Copperplate";
fontSize = 16;
selectedBarColor = [UIColor lightGrayColor];
selectedTintColor = [UIColor lightGrayColor];
selectedFontColor = [UIColor darkGrayColor];
backgroundColor = [UIColor whiteColor];
selectedHighlightColor = UITableViewCellSelectionStyleGray;
backgroundImage = nil;
detailBackgroundImage = nil;
break;
Затем, когда цвет/стиль/шрифт называется, я что-то вроде этого:
cell.selectionStyle = selectedHighlightColor;
cell.backgroundColor = backgroundColor;
Это позволило мне изменить настройки и стили, но Мне все равно пришлось перезапустить приложение каждый раз, чтобы увидеть изменения.
Исправление оказалось простым.
Настройки стилей изменяли значения констант (например, fontColor) - но я фактически не изменял поля.
Таким образом, в конце заявления переключателя, все, что я добавил что-то вроде этого:
self.tableView.backgroundColor = backgroundColor;
self.navigationController.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:backgroundImage]];
self.navigationController.navigationBar.tintColor = selectedBarColor;
self.tableView.separatorColor = selectedTintColor;
Я должен был сделать это в обоих контроллерах зрения.
Кроме того, весь этот код был частью обычной (changeSettings).
Этот метод наблюдается для поиска изменений.
То, как я обрабатывал внешний вид предпочтений в приложении (модальный VC), должен был использовать потрясающий InAppSettingsKit.
Я надеюсь, что это поможет другим. Большинство из вас найдут это без проблем, которого я ожидаю, но, не имея большого мозга, мне потребовалось две недели, чтобы понять это.
Возможно, я должен перефразировать вопрос - может ли это быть сделано? –