ボタンを押すとポップするストーリーボードに日付ピッカーを使用してポップオーバーを作成しました。日付を選択して完了ボタンを押した後、日付を に送信する必要がありUIViewController
ます。
uipopover デリゲートの uidatepicker で説明されているように、プロトコルとデリゲート メソッドを設定しましたが、viewcontrollerのデリゲート メソッドが呼び出されません。何か不足していますか?これにはセグエを使用する必要がありますか?? 助けてください!!
- (IBAction)doneButtonPress:(UIBarButtonItem *)sender {
NSLog(@"donebuttonpress");
[_delegate receiveDate:pickedDate];
NSLog(@"afterdelegation");
}
donebuttonpress
との両方afterdelegation
が出力されますが、メソッドは呼び出されたことはありません:(
//selectDatePopover.h
#import <UIKit/UIKit.h>
@protocol selectDatePopoverDelegate <NSObject>
- (void)receiveDate:(NSString *)theDate;
@end
@interface selectDatePopover : UIViewController{
id <selectDatePopoverDelegate> delegate;
}
@property (nonatomic, assign) id < selectDatePopoverDelegate > delegate;
- (IBAction)doneButtonPress:(UIBarButtonItem *)sender;
- (IBAction)mydatepicker:(UIDatePicker *)sender;
@end
//selectDatePopover.m
- (IBAction)doneButtonPress:(UIBarButtonItem *)sender {
NSLog(@"donebuttonpress");
NSLog(_delegate);
[_delegate receiveDate:pickedDate];
NSLog(@"afterdelegation");
}
- (IBAction)mydatepicker:(UIDatePicker *)sender {
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd"];
pickedDate = [formatter stringFromDate:[sender date]];
NSLog(pickedDate);
}
//CheckIn_ViewController.h
#import "selectDatePopover.h"
@interface CheckIn_ViewController : UIViewController <selectDatePopoverDelegate>
@property UIPopoverController *popover;
@end
//CheckIn_ViewController.m
- (void)receiveDate:(NSString *)theDate {
NSLog(@"backhere");
dateLabel.Text = theDate;
}
//このボタンを押すと、ポップオーバーが表示されます:
- (IBAction)calendarbutton:(UIButton *)sender {
UIView *anchor = sender;
selectDatePopover *selectDatePopoverInstance =
[self.storyboard instantiateViewControllerWithIdentifier:@"selectDatePopover"];
_popover = [[UIPopoverController alloc] initWithContentViewController:selectDatePopoverInstance];
[_popover presentPopoverFromRect:anchor.frame
inView:anchor.superview
permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
selectDatePopoverInstance.delegate = self;
}