Инициировать события при переключении видов - PullRequest
0 голосов
/ 08 декабря 2011

Это легко.

Предположим, у меня есть два представления: firstView и SecondView.

firstView - это вид ROOT.

Я загружаю secondView из firstView:

secondView *secondViewController;
secondViewController = [[SecondView alloc] 
                      initWithNibName:@"SecondView" bundle:nil];
[self.view addSubview:SecondViewController.view];

Я добавил кнопку «Назад» в secondView.

Когда я нажимаю эту кнопку, я возвращаюсь к первому виду:

[self.view removeFromSuperView];

Вот вопрос:

Когда firstView -> secondView, viewDidLoad в secondView срабатывает.

Как я могу вызвать событие, чтобы сообщить firstView, когда я вернусь, используя removeFromSuperView в secondView?

1 Ответ

0 голосов
/ 08 декабря 2011

Что именно вы хотите сделать? может быть, вы просто хотите перейти от вашего первого контроллера представления к вашему второму контроллеру представления? а затем вернуться к вашему первому контроллеру просмотра? в этом случае просто сделайте так, если ваш первый контроллер уже встроен в контроллер навигации:

[self.navigationController pushViewController:secondViewController animated:YES];

Но если вы просто хотите создать представление из Interface Builder, а затем добавить его над первым представлением, вы можете использовать центр уведомлений для публикации события, когда вы нажимаете кнопку «Назад» на втором представлении:

- (void) backButtonClicked:(id)sender {
    [self.view removeFromSuperView];
    [[NSNotificationCenter defaultCenter] postNotificationName:@"back"
                                                        object:self.view];
}

Затем вы можете добавить наблюдателя для этого события в вашем первом контроллере представления, например:

- (void) pushSecondViewController {
    [[NSNotificationCenter defaultCenter] addObserver:self 
                                             selector:@selector(secondViewDidGoBack:) 
                                                 name:@"back"
                                               object:secondViewController.view];

    SecondView *secondViewController = [[SecondView alloc] initWithNibName:@"SecondView"
                                                                    bundle:nil];
    [self.view addSubview:secondViewController.view];
}

- (void) secondViewDidGoBack:(NSNotification *)notification {
    [[NSNotificationCenter defaultCenter] removeObserver:self];

    NSLog(@"My Second View Did Go back !");
}

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

...