0

我有一个我想使用的 UIPopover

-(BOOL)popoverControllerShouldDismissPopover:(UIPopoverController *)popoverController{
    return NO;
}

或者

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

在。它们似乎都不起作用(我敢肯定,一旦修复了一个,另一个也会如此,因为这可能是代表的问题)。对于代表,这是我所拥有的:

在 optionsViewController.h 中,弹出框内的视图:

#import <UIKit/UIKit.h>

@protocol OptionsViewControllerDelegate <NSObject>


-(void)didPick:(NSString *)string;
@end
id delegate;


@interface OptionsViewController : UIViewController <OptionsViewControllerDelegate>{

    IBOutlet UIPickerView *picker;
    NSMutableArray *list;

}
@property (nonatomic, copy) NSArray *passthroughViews;
@property(nonatomic,retain) NSMutableArray *list;
@property(nonatomic,assign) id<OptionsViewControllerDelegate> delegate;

@end

在 .m 中:

@synthesize delegate;

在弹出窗口出现的视图的 .h 中:

@interface exampleViewController : UIViewController <OptionsViewControllerDelegate,UIPopoverControllerDelegate>{
    UIPopoverController *popoverController;
    OptionsViewController *optionsViewController;
}

在 .m 中:

@synthesize popoverController;
@synthesize optionsViewController;
-(BOOL)popoverControllerShouldDismissPopover:(UIPopoverController *)popoverController{
    return NO;
}

    [popoverController release];
    [optionsViewController release];

在 ViewDidLoad 中,我有:

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {

        optionsViewController =[[OptionsViewController alloc]init];
        optionsViewController.delegate = self;
        popoverController = [[UIPopoverController alloc] initWithContentViewController:optionsViewController];
        popoverController.popoverContentSize = CGSizeMake(320, 216);
    }

为了呈现弹出框,我使用:

-(IBAction)showDecadePopover{
    [popoverController presentPopoverFromRect:CGRectMake(150, 50, 150, 50) inView:self.view permittedArrowDirections:UIPopoverArrowDirectionLeft animated:YES];
}

我可能遗漏了一些非常明显的东西(这就是我提供这么多代码的原因)。非常感谢!

卢克

4

1 回答 1

2

是的,简单的修复。初始化 popoverController 后,您需要将 exampleViewController 设置为它的委托。

 [popoverController setDelegate:self];

PS:id delegate;您的 OptionsViewControllerDelegate 协议定义后的浮动是什么?您已经完成的Synthesizingdelegate就是为其创建存储所需的全部内容。

于 2011-08-31T03:52:38.170 回答