メインビューコントローラーからストーリーボードを使用せずにプログラムで生成されたポップアップビューコントローラーがあります。ユーザーがポップアップビューコントローラーのツールバーにある[完了]ボタンを使用して入力を導入したら、それを閉じたいと思います。私はポップオーバーを却下するためにprotrocollを使用しようとしていますが、機能しません。私はインターネットで見つけたいくつかの提案を育てて適用してきましたが、すべて同じ否定的な結果をもたらしました。私は何かを監督しますか?
関連するコードは次のとおりです。
メインビューコントローラー.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
popover viewcontroller.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
popover viewcontroller.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]を押すまで、すべてが正常に機能します。が実行されていないため、メインビューコントローラーにアクセスして、popupviewコントローラーを閉じるためのメソッドdismissPopOverContentVCを実行できません。私は何を間違えたのですか、それとも何かを逃したのですか?
ヒントをよろしくお願いします。