2013-02-24 79 views
0

我確實有一個以編程方式生成的沒有來自主視圖控制器的故事板的彈出視圖控制器,並且想要在用戶通過工具欄上的完成按鈕引入輸入後關閉它彈出式視圖控制器。我一直試圖用protrocoll來解僱popover,但它不起作用。我一直在培養和應用在互聯網上發現的一些建議,但都給出了同樣的負面結果。我要監督一些事情嗎?當點擊一個uibutton時關閉popover

下面是相關的代碼:

主視圖控制器的.h

#import <UIKit/UIKit.h> 
#import "PopOverContentVC.h" 

@interface CCViewController : UIViewController <UIPopoverControllerDelegate, PopOverContentVCDelegate> { 

UIPopoverController *detailViewPopover; 
} 

@property (retain, nonatomic) UIPopoverController *detailViewPopover; 

@end 

主視圖控制器.m文件

#import "PopOverContentVC.h" 

@interface CCViewController() 

@end 

@implementation CCViewController 

@synthesize detailViewPopover; 

... 

- (void) dismissPopOverContentVC{ 

[detailViewPopover dismissPopoverAnimated:YES]; 
detailViewPopover = nil; 
} 

- (void) popOverSetUp{ 

PopOverContentVC *content = [[PopOverContentVC alloc] init]; 
detailViewPopover = [[UIPopoverController alloc] initWithContentViewController:content]; 
detailViewPopover.popoverContentSize = CGSizeMake(500., 150.); 
detailViewPopover.delegate = self; 
[detailViewPopover presentPopoverFromRect:[self coordinatesOfSegment] 
            inView:self.spreadSheetView 
       permittedArrowDirections:UIPopoverArrowDirectionUp 
           animated:YES]; 

- (void) segmentSelectedAtRow: (UISegmentedControl *)sender{ 

if (self.detailViewPopover) { 

    [self.detailViewPopover dismissPopoverAnimated:YES]; 
    self.detailViewPopover = nil; 
    [self popOverSetUp]; 

} else { 

    [self popOverSetUp]; 
} 
} 

... 
@end 

酥料餅視圖控制器h文件

#import <UIKit/UIKit.h> 

@class PopOverContentVC; 

@protocol PopOverContentVCDelegate <NSObject> 

- (void)dismissPopOverContentVC; 

@end 

@interface PopOverContentVC : UIViewController 

@property (assign, nonatomic) id <PopOverContentVCDelegate> delegate; 

- (void) doneButtonPressed:(id)sender; 

... 

@end 

酥料餅的視圖控制器.m文件

#import "PopOverContentVC.h" 
#import "CCViewController.h" 

@interface PopOverContentVC() 


@property (strong, nonatomic) UIBarButtonItem *doneButton; 

@end 

@implementation PopOverContentVC 
@synthesize delegate; 

... 


- (void) viewDidLoad { 

    ... 

     self.doneButton = [[UIBarButtonItem alloc] initWithTitle:@"Done" style:UIBarButtonItemStyleDone target:self action:@selector(doneButtonPressed:)]; 

... 
} 

- (void) doneButtonPressed:(id)sender { 

    [self.delegate dismissPopOverContentVC]; 

} 

我按照與NSLog的所有步驟,並一切正常,直到後,我按完成按鈕[self.delegate dismissPopOverContentVC]沒有被執行,因此我沒有去主視圖控制器執行方法dismissPopOverContentVC來解散彈出視圖控制器。我做錯了什麼或錯過了什麼?

非常感謝您提供任何提示。

回答

2

不看我,就像您設置的PopOverContentVC對象的delegate - 您只設置UIPopoverControllerdelegate。在popoverSetup添加

content.delegate = self; 

你所創建的PopOverContentVC後。

+0

它完美的工作。非常感謝你,你完成了一個漫長的頭痛期;-))。 – user2046702 2013-02-27 09:41:57