Раскадровка: Закрытие Popover с помощью метода делегата/протокола

Я прочитал тонныматериала по этому вопросу, и хотя большинство из них, кажется, относится к подходу без раскадровки, я думал, что собрал кусочки воедино. и разобрался. Однако следующий код не приводит к отклонению моего всплывающего окна. Кнопка rejectPopoverButtonPressed в Popover выполняется, но точка останова в методе rejectPopover в делегате никогда не срабатывает. Был бы очень признателен, если бы кто-то просмотрел код, чтобы обнаружить ошибки.

Спасибо

Далее NewGameViewController содержит UIButton. Нажатие этой кнопки приводит к переходу всплывающего окна и последующему отображению всплывающего окна, содержащего UIView PopViewController.

NewGameViewController.h

#import "PopViewController.h"
@interface NewGameViewController: UIViewController <DismissPopoverDelegate>
{
    UIPopoverController *popover;
}

NewGameViewController.m

@implementation NewGameViewController
-(void)prepareForSegue:(UIStoryboardPopoverSegue *)segue sender:(id)sender
{
    if ([[segue identifier] isEqualToString:@"popoverSegue"])
    {
        popover = [(UIStoryboardPopoverSegue *)segue popoverController];
        // getting warning: Assigning to 'id<UIPopoverControllerDelegate>' from incompatible type 'NewGameViewController *const__strong'
        //popover.delegate = self;
    }
}

-(void)dismissPopover
{
    [popover dismissPopoverAnimated:YES];
}

PopViewController.h

@protocol DismissPopoverDelegate <NSObject>
-(void) dismissPopover;
@end

@interface PopViewController: UIViewController
{
    __unsafe_unretained id<DismissPopoverDelegate> delegate;
}

@property (nonatomic, assign) id<DismissPopoverDelegate> delegate;
-(IBAction)dismissPopoverButtonPressed:(id)sender;
@end

PopViewController.m

#import "NewGameViewController.h"
@implementation PopViewController
@synthesize delegate;
-(IBAction)dismissPopoverButtonPressed:(id)sender
{
    [self.delegate dismissPopover];
}
11
задан Tony 10 June 2012 в 06:00
поделиться