в моем универсальном приложении у меня есть UIControl View внутри UIScrollView.
При нажатии кнопки настройки я добавляю еще один View как подпредставление, например:
SetupController *setupview = [[SetupController alloc] initWithNibName:@"SetupView-iPad" bundle:nil];
[mainview addSubview:setupview.view];
подпредставление отображается как ожидалось.В этом SubView у меня есть несколько кнопок, которые позволяют пользователю переключаться между настройками.Выполненные действия сохраняются в локальной базе данных.
Проблема заключается в следующем: при нажатии кнопки в дополнительном окне необходимо обновить основное окно, чтобы применить изменения.Я протестировал много способов сделать это:
В классе Subviews:
[self.parentViewController.view setNeedsDisplay];
Безрезультат.
Затем я попытался обновить основное представление уведомлением:
Я добавил это в свой файл класса subviews, в функцию, которая изменяет мои настройки.
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
[nc postNotificationName:@"setEmoticon_NOTIFICATION" object:self];
}
Затем я добавил наблюдателя в мой mainview в методе ViewDidLoad:
[[NSNotificationCenter defaultCenter] addObserver: собственный селектор: @selector (refreshView) имя: @ объект "setEmoticon_NOTIFICATION": nil];
и создал функцию для этого наблюдателя:
-(void)refreshView{
NSLog(@"Notification!");
[self.view performSelectorOnMainThread:@selector(setNeedsDisplay) withObject:nil waitUntilDone:YES];
}
В журнале я получаю «Уведомление!»на изменение настроек.Но что бы я ни пытался, без обновления.Я пытался установить setNeedsDisplay, resignFirstResponder, [self viewDidLoad:], но все равно ничего не работает.
Есть идеи, как обновить мой основной вид?