Хорошо, у меня проблема, и я не смог найти, что я делаю неправильно.
У меня есть UIVievController
с видом, некоторыми функциями и прочим.Один - открыть (с помощью кнопки на листе действий) другой UIVeiwController
.Выглядит так:
PersonalSettings *personalSettings;
-(IBAction) displaySettingsMenu:(id)sender
{
personalSettings = [[PersonalSettings alloc]
initWithNibName:@"PersonalSettings"
bundle:nil];
[self.view addSubview:personalSettings.view];
[SettingsSheet dismissWithClickedButtonIndex:0 animated:YES];
}
Это работает как шарм, и я могу делать обновления в этом виде.Когда я закрываю это представление, все настройки обновляются должным образом, и представление исчезает, но я хочу перезагрузить родительский ViewController
(Просмотр?), Чтобы я мог видеть новые настройки, которые я сделал.У меня в родительской функции есть функция void, но как я могу ее вызвать?Когда нажата кнопка сохранения в дочернем элементе ViewController
, я удаляю представление с помощью:
[self.view removeFromSuperview];
Что я должен сделать здесь, это вызвать функцию обновления из дочернего представления для родительского представления.
Я нашел некоторый код для этого, но за исключением «суперкласса» вместо «superview», так как superview не появляется в списке.Выглядит примерно так:
[self.view removeFromSuperview];
MainViewController *Parent = (MainViewController *)self.superclass;
[Parent updateView];
Есть ли что-то «волшебное», что я могу сделать, чтобы сказать что-то вроде «перезагрузить родительское представление»?
Надеюсь, я сделал проблему понятной.:)
РЕДАКТИРОВАТЬ:
На самом деле спасибо, Гюс, я сейчас ближе.Я не уверен на 100%, как работает эта функция делегата (пока), но я близок к решению.На самом деле, я понял, что даже не нужно запускать метод, просто обновить метку.
От ребенка я написал это:
MainViewController* Parent = [[MainViewController alloc] init];
Parent.delegate = self;
Parent.TheLabel.text = @"foo";
... но это не работает - даже если он действительно находит ярлык и все остальное.И если я из дочернего процесса пытается это сделать:
NSLog(@"Parent label: %@", Parent.TheLabel.text);
, в нем записывается «Родительский ярлык: (ноль)».
Но, тем не менее, я могу теперь получить функцию обновления от дочернего элемента иэто работает.Проблема в том, что эта функция принимает значения из других меток (в родительском представлении), и именно здесь происходит сбой - все они говорят, что null, когда я запускаю функцию от дочернего элемента.Даже если их нет.Есть идеи почему?