Как получить уведомление, когда появится вид? - PullRequest
2 голосов
/ 22 декабря 2010

Когда я делаю модальный переход на половину страницы curl:

alt text

Как узнать, когда страница вернулась в ее текущее состояние?Я хочу позвонить, когда представление "Настройки" было закрыто.

Я пытался использовать viewWillAppear:(BOOL)animated, но, похоже, он не вызывается при закрытии представления.Есть идеи?

Ответы [ 3 ]

2 голосов
/ 22 декабря 2010

Вы можете зарегистрировать наблюдателя NSNotificationCenter в главном представлении и опубликовать уведомление в фоновом режиме.И вместо viewWillAppear вы можете использовать viewDidLoad.

// РЕДАКТИРОВАТЬ: пример кода для получения жеста касания в данном прямоугольнике

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    if ([[event allTouches]count] == 1) {
        UITouch *t = [[touches allObjects]lastObject];
        CGPoint p = [t locationInView:self.view];
        if (p.y < 200) NSLog(@"above 200");
    }
}
1 голос
/ 22 декабря 2010

В вашем viewDidLoad зарегистрируйте уведомление:

[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(updateView:) 
                                             name:@"updateRootView"
                                           object:nil];

Теперь это уведомление, которое мы называем

- (void) updateView:(NSNotification *) notification
{
    /*  notification received after the page is uncurled  */
}

Метод вызова:

- (void) unCurlPage
{
    // All instances of TestClass will be notified
    [[NSNotificationCenter defaultCenter] postNotificationName:@"updateRootView" object:self];
}

И не забудьте отменить уведомление

- (void) dealloc
{
    [[NSNotificationCenter defaultCenter] removeObserver:self];
    [super dealloc];
}
0 голосов
/ 22 декабря 2010

ViewWilAppear - это сообщение / метод UIViewController.Если вы меняете только взгляды, он не будет вызван.Как выглядит код, который вы используете для закрытия представления настроек?


Редактировать

Похоже, вам нужно немного изменить рефакторинг.Предполагая, что все это обрабатывается родительским UIViewController для этого представления настроек, вы можете реализовать что-то вроде:

- (void)settingsPanelOpen {
    // present the modal
    // hook to inform of opening (if necessary)
}

- (void)settingsPanelClose {
    // dismiss modal
    // hook to inform of closing
}

Тогда settingsPanelClose может иметь хук, если вам нужно знать, когда закрываются настройки.

Другая вещь, которую вы можете сделать, это создать подкласс UIViewController как SettingsViewController и переопределить viewDidDisappear: метод для запуска уведомления SettingsDidSave или иным образом сообщить вашему приложению, что оно закрылось.

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