当点击一个uibutton时关闭popover

当点击一个uibutton时关闭popover

问题描述:

我确实有一个以编程方式生成的没有来自主视图控制器的故事板的弹出视图控制器,并且想要在用户通过工具栏上的完成按钮引入输入后关闭它弹出式视图控制器。我一直试图用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来解散弹出视图控制器。我做错了什么或错过了什么?

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

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

content.delegate = self; 

你所创建的PopOverContentVC后。

+0

它完美的工作。非常感谢你,你完成了一个漫长的头痛期;-))。 – user2046702 2013-02-27 09:41:57