Итак, чтобы помочь другим, я опубликую, как я (с помощью 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) - но я на самом деле не менял поля.
Итак, в конце операторов switch все, что я добавил, было примерно так:
self.tableView.backgroundColor = backgroundColor;
self.navigationController.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:backgroundImage]];
self.navigationController.navigationBar.tintColor = selectedBarColor;
self.tableView.separatorColor = selectedTintColor;
Я должен был сделать это в обоих контроллерах представления.
Кроме того, весь этот код был частью подпрограммы (changeSettings).
Этот метод наблюдается для поиска изменений.
То, как я обрабатывал внешний вид предпочтений в приложении (модальный ВК), заключалось в использовании потрясающего InAppSettingsKit .
Надеюсь, это поможет другим. Я полагаю, что большинство из вас найдет это легким делом, но, если у меня осталось мало мозгов, мне потребовалось две недели, чтобы понять это.