iOS Доступ к элементам родительского представления из дочернего представления

У меня есть ViewController1.h/m и SettingsViewController.h/m. В ViewController1.m у меня есть это:

ViewController1.h
@property (nonatomic, weak) UIView *settingsView;

ViewController1.m

//alloc init _settingsView
SVC = [[SettingsViewController alloc]init];
[self addChildViewController:SVC];
SVC.view.frame = self.view.bounds;
[_settingsView addSubview:SVC.view];
[SVC didMoveToParentViewController:self];

Я не удаляю ViewController1 из родительского представления, когда добавляю настройки. Он просто сбоку и скользит, когда я переключаю вид настроек с помощью кнопки. Внутри SettingsViewController у меня есть таблица, и при нажатии строки я хочу сдвинуть SettingsViewController с экрана и выполнить селектор из ViewController1... вот где моя проблема сейчас. Вот что я пытаюсь сделать:

SettingsViewController.m

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
    [tableView deselectRowAtIndexPath:indexPath animated:YES];
    if (indexPath.section == 0) {
        ViewController1 *VC1 = [[ViewController1 alloc]init];
        [VC1.settingsView setFrame:CGRectMake(320, 0, VC1.view.frame.size.width, VC1.view.frame.size.height)];
        //NSLog(@"%f", VC1.settingsView.center.x);
        //tried:
        //[VC1 performSelector:@selector(...)]; I have the method declared in VC1.h
    }
}

Регистрация VC1.settingsView.center.x всегда дает мне 0 ... когда должно быть 160. Добавление оператора журнала в методы VC1 при запуске журнала performSelector ДЕЛАЕТ, но остальная часть метода не запускается, не сдвигает SettingsViewController с экрана. Я не понимаю отношения родителей и детей???


person denikov    schedule 08.08.2014    source источник


Ответы (1)


Дерьмо, нашел ответ после нескольких часов попыток... благодаря этому

if([self.parentViewController isKindOfClass:[SomeViewController class]]) {
    SomeViewController* viewController = (SomeViewController*)self.parentViewController;
    [viewController foo];
}
person denikov    schedule 08.08.2014