2011-08-31 106 views
0

我有,我想用一個UIPopover要麼UIPopoverController委託問題?

-(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; 

,並在。

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

並在.M::其中出現的酥料餅視圖h的

@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]; 
} 

我可能失去了一些東西真的很明顯(這就是爲什麼我顧不得那麼多了我的代碼)。非常感謝!

Luke

+0

你可以發佈你初始化和/或呈現popover的代碼嗎? –

+0

我將它添加到問題中。希望有所幫助。謝謝 –

回答

2

是的,簡單的修復。在初始化popoverController之後,您需要將exampleViewController設置爲它的委託。

[popoverController setDelegate:self]; 

PS:什麼是你的id delegate;協議OptionsViewControllerDelegate定義後浮動?您已經完成了合成delegate,您只需爲其創建存儲即可。

+0

It Works!非常感謝! –