【问题标题】:UIPopoverController Delegate Problem?UIPopoverController 代表问题?
【发布时间】:2011-08-31 03:28:51
【问题描述】:

我有一个我想使用的 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];
}

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

卢克

【问题讨论】:

  • 你能贴出初始化和/或显示弹出框的代码吗?
  • 我将其添加到问题中。希望有帮助。谢谢

标签: objective-c ios xcode uipopovercontroller uipopover


【解决方案1】:

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

 [popoverController setDelegate:self];

PS:在 OptionsViewControllerDelegate 协议定义之后浮动的id delegate; 是什么?合成delegate(您已经完成)是为它创建存储所需的全部内容。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-05
    • 2011-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多