Уведомление о просмотре поповера - PullRequest
1 голос
/ 01 ноября 2010

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

Есть ли способ сделать это?

Ответы [ 3 ]

6 голосов
/ 01 ноября 2010

Ответ невероятно прост!

Процедура делегирования popoverControllerDidDismissPopover вызывается для вас всякий раз, когда всплывающее окно отклоняется.

Так что просто добавьте этот код в ваш код ...

-(void)popoverControllerDidDismissPopover:
        (UIPopoverController *)popoverController
    {
    NSLog(@"a popover was dismissed! thank you stackoverflow!");
    }

OK? Вы также можете использовать popoverControllerShouldDismissPopover, если вы действительно хотите предотвратить его отклонение.

(Обратите внимание - в необычном случае, когда вы работаете с более чем одним поповером, просто проверьте внутри этой подпрограммы, какая именно она удаляется. Так, например, если (popoverController == myPostcodePopover) {} или что-то еще.)

Если вы не знаете, как что-то сделать, решение почти всегда заключается в наличии делегатов в классе, с которым вы работаете.

----------- не забудьте сделать это!

Всякий раз, когда вы используете какой-либо делегат, конечно, вы должны установить делегата на «вы»,

zipcodeEntryPopover.delegate = self;

----------- не забудьте сделать это!

Если вы собираетесь использовать такой делегат, вам просто нужно добавить его в ваши объявления делегатов, где вы объявляете класс в вашем .h файле.

Итак, в вашем .h файле у вас будет что-то вроде этого,

@interface yourHappyThing : UIViewController <ASIHTTPRequestDelegate,
                    UIAccelerometerDelegate,
                    thisDelegate,
                    thatDelegate>

(Часто их там много, как системных делегатов, так и ваших собственных, созданных вами.) Итак, вам просто нужно добавить один для делегата popover, таким образом ...

@interface yourHappyThing : UIViewController <ASIHTTPRequestDelegate,
                    UIAccelerometerDelegate,
                    thisDelegate,
                    thatDelegate,
                    UIPopoverControllerDelegate>

Это должно сделать это! Если это не сработает, я всегда рад помочь девушке-барби, поэтому, пожалуйста, спросите что-нибудь еще!

3 голосов
/ 01 ноября 2010

Как и другие говорили, используйте -(void)popoverControllerDidDismissPopover: (UIPopoverController *)popoverController Но они все пропустили одну критическую точку;не забудьте изменить делегат UIPopoverController при его создании:

UIPopoverController *popoverController = [[UIPopoverController alloc] initWithContentViewController:datePicker];
popoverController.delegate = self;
0 голосов
/ 01 ноября 2010

используйте этот метод делегата

-(void)popoverControllerDidDismissPopover:
    (UIPopoverController *)popoverController
{

}
...