2012-12-30 34 views
2

我與酥料餅的工作中,酥料餅裏面包含有一個UITableView,我想獲得價值當在UITableView的水龍頭,我裏面故事板 - 委派酥料餅

popover.h創建委託

@class PopOverVCDelegate; 
@protocol PopOverVCDelegate <NSObject> 

-(void)getValue:(int)value; 

@end 

@interface .. 
{ 
@property(nonatomic)id<PopOverVCDelegate> delegate; 
} 
@end 

popover.m

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    [self.delegate getValue:[indexPath row]]; 
} 

和mainclass接收委託是

mainclass.h

#import "PopOverVC.h" 
@interface MainClassVC : UIViewController<PopupCatchupVCDelegate,UIPopoverControllerDelegate> 
{} 

mainclass.m

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    if ([[segue identifier] isEqualToString:@"showPopover"]) 
    { 
     [[segue destinationViewController] setDelegate:self]; 
     UIPopoverController *p = [(UIStoryboardPopoverSegue *)segue popoverController]; 
     p.popoverBackgroundViewClass = [CustomPopoverBackground class]; 
     self.popoverController = p;   
     popoverController.delegate = self; 
    } 
} 

-(void)getValue:(int)value 
{ 
    NSLog(@"adsf-%d",value); 
} 

我沒有得到任何代表價值。任何人都可以幫助我,我使用故事板並從推送導航中調用彈出窗口。

回答

0

在popover.h中,您聲明瞭在mainclass.h中的協議PopOverVCDelegate &,您正在實現PopupCatchupVCDelegate協議。你的主類應該確認PopOverVCDelegate。

@interface MainClassVC : UIViewController<PopOverVCDelegate, PopupCatchupVCDelegate, UIPopoverControllerDelegate> 

您也應該檢查是否委託方法的實現與否之前調用它喜歡 -

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    if([self.delegate respondsToSelector:@selector(getValue:)]) 
     [self.delegate getValue:[indexPath row]]; 
} 

編輯

我看着故事板,並注意到,您的代理是沒有得到設置爲更正控制器。您正在將代理設置爲p(UIPopoverController),您應該將其設置爲popover的contentViewController(PopOver)。

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    if ([[segue identifier] isEqualToString:@"idenPopover"]) 
    { 
     [[segue destinationViewController] setDelegate:self]; 
     UIPopoverController *p = [(UIStoryboardPopoverSegue *)segue popoverController]; 
     p.popoverBackgroundViewClass = [CustomPopoverBackground class]; 
     self.popoverController = p; 
     self.popoverController.delegate = self; 

     //set delegate to PopOver 
     UINavigationController *navigationController = (UINavigationController*)p.contentViewController; 
     PopOver *popOver = (PopOver*)navigationController.topViewController; 
     [popOver setDelegate:self]; 
    } 
} 
+0

我已經在Prepasegue中調用了委託 - > popoverController.delegate = self; – heaven

+0

我在談論確認協議不設置委託。把下面一行放在你的mainclass.h中@interface MainClassVC:UIViewController

+0

委託仍然不起作用@Rahul – heaven