UIPopover Delegate - Невозможно назначить независимо от протокола / декларации - PullRequest
0 голосов
/ 14 сентября 2011

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

//.h of View where I call popover, this would be the delegate.

#import <UIKit/UIKit.h>
#import "ACTypePopoverViewController.h"

@interface NewRouteViewController : UIViewController<ACTypePickerDelegate>{

    ACTypePopoverViewController *_acTypePicker;
    UIPopoverController *_acTypePickerPopover;

}

@property (nonatomic, retain) ACTypePopoverViewController *acTypePicker;
@property (nonatomic, retain) UIPopoverController *acTypePickerPopover;

@end

//.m file for where I would like to use the popover, is the .m for the .h above

if (_acTypePickerPopover == nil)
{
    ACTypePopoverViewController* content = [[ACTypePopoverViewController alloc] init];
    UIPopoverController* aPopover = [[UIPopoverController alloc]
                                 initWithContentViewController:content];
    aPopover.delegate = self;
    [content release];

    // Store the popover in a custom property for later use.
    self.acTypePickerPopover = aPopover;
}   

[self.acTypePickerPopover presentPopoverFromRect:self.selectACTypeButton.frame inView:self.view permittedArrowDirections:UIPopoverArrowDirectionLeft animated:YES];

//.h file for the actual popover, what I would be setting the delegate of

@protocol ACTypePickerDelegate
- (void)acTypeSelected:(NSString *)acType;
@end

@interface ACTypePopoverViewController : UITableViewController {
    NSMutableArray *_acTypes;
    NSString *selectedACType;
    id<ACTypePickerDelegate> _delegate;
}

@property (nonatomic, retain) NSMutableArray *acTypes;
@property (nonatomic, retain) NSString *selectedACType;
@property (nonatomic, assign) id<ACTypePickerDelegate> delegate;

@end

Я думаю, это все, что мне нужно, но дайте мне знать, если понадобится больше кода!

Спасибо!

Ответы [ 2 ]

1 голос
/ 14 сентября 2011

Я правильно вас понял ... вам нужно:

content.delegate = self;

Сразу после этой строки у вас есть:

ACTypePopoverViewController* content = [[ACTypePopoverViewController alloc] init];
0 голосов
/ 14 сентября 2011

Вы синтезируете свои свойства?Также вы назначаете своего делегата до начала всплывающего окна ...

@synthesize acTypePickerPopover;
self.acTypePickerPopover = [[[UIPopoverController alloc] initWithContentViewController:_acTypePickerPopover] autorelease];
self.acTypePickerPopover.delegate = self; `

...