我有一个我想使用的 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];
}
我可能遗漏了一些非常明显的东西(这就是我提供这么多代码的原因)。非常感谢!
卢克