Невозможно изменить представления в splitviewcontroller - PullRequest
0 голосов
/ 20 января 2011

Я пытаюсь изменить представления в контроллере splitview, основываясь на нажатии кнопки в модальном представлении (человек выбирает опцию).Я использую уведомления, чтобы выполнить это:

  1. Когда кнопка нажимается в модальном представлении, она выдает уведомление, затем закрывает (закрывает) себя:

    [[NSNotificationCenter defaultCenter] postNotificationName: @ "launchProject" object: nil];

  2. DetailViewController внутри контроллера разделенного представления прослушивает это уведомление и переключает представления в SVC

-(void)launchProject:(NSNotification *)notification {
    Project* secondDetail2 = [[Project alloc] initWithNibName:nil bundle:nil];
    ProjectRootController* secondRoot2 = [[ProjectRootController alloc] initWithNibName:nil bundle:nil ]; 
    self.splitViewController.viewControllers =[NSArray arrayWithObjects: secondRoot2, secondDetail2 , nil];

}

Я не понимаю, почему взгляды не переключаются.Любые советы по этому поводу будут приветствоваться.

1 Ответ

0 голосов
/ 21 января 2011

Вы не показали весь код, поэтому я предполагаю, что проблема заключается в неправильном понимании работы уведомлений. Это может поначалу сбивать с толку, но это очень просто. Пока у вас есть:

[[NSNotificationCenter defaultCenter] postNotificationName:@"launchProject" object:nil]

что хорошо.

Но вам также нужно иметь

[[NSNotificationCenter defaultCenter]
 addObserver:self 
 selector:@selector(launchProject:) // selector should be your function name, launchProject
 name:@"launchProject" // notification name - must be same as what is given to postNotificatioName.
 object: nil];

где-то, как в init функции.

Другими словами, postNotificationName:@"launchProject" НЕ вызывает вашу функцию launchProject. Он помещает уведомление с именем "launchProject" в NSNotificationCenter defaultCenter. Если вы не ищете это конкретное уведомление, то ничего не произойдет.

Надеюсь, это поможет ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...