Ios uidatepicker委托不工作的UIPover
我在故事板上用datepicker创建了一个弹出框,当按下按钮时弹出。选择日期并按下“完成”按钮后,必须将日期发送到Ios uidatepicker委托不工作的UIPover,ios,uiviewcontroller,delegates,uipickerview,uipopover,Ios,Uiviewcontroller,Delegates,Uipickerview,Uipopover,我在故事板上用datepicker创建了一个弹出框,当按下按钮时弹出。选择日期并按下“完成”按钮后,必须将日期发送到UIViewController 我已经设置了协议和委托方法,如所述,但从未调用viewcontroller中的委托方法。我错过什么了吗?我需要使用segues吗??请帮忙 - (IBAction)doneButtonPress:(UIBarButtonItem *)sender { NSLog(@"donebuttonpress"); [_delegate rec
UIViewController
我已经设置了协议和委托方法,如所述,但从未调用viewcontroller中的委托方法。我错过什么了吗?我需要使用segues吗??请帮忙
- (IBAction)doneButtonPress:(UIBarButtonItem *)sender {
NSLog(@"donebuttonpress");
[_delegate receiveDate:pickedDate];
NSLog(@"afterdelegation");
}
打印donebuttonpress
和afterdelegation
,但从未调用过该方法:(
//选择DatePopover.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
//签入视图控制器.h
#import "selectDatePopover.h"
@interface CheckIn_ViewController : UIViewController <selectDatePopoverDelegate>
@property UIPopoverController *popover;
@end
//按下此按钮时,popover必须显示:
- (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;
}
此行:self.popover.delegate=self;不正确。委托协议不在popover类中,它在其内容视图控制器中,该控制器为selectDatePopover。因此,将该行更改为:
selectDatePopover.delegate = self;
尝试记录\u delegate和pickedDate以确保两者都不是nil.pickedDate不是空的..我记录了..但不知道如何记录delegate..然后发布设置委托的代码,以及创建委托协议和委托属性的.h文件。我刚刚尝试了NSLog(delegate)并且它返回了空的@rdelMather日志应该是NSLog(@“%@”,delegate)。将其放入doneButtonPress方法中。它返回一个错误:在类型为“UIViewController*”的对象上找不到属性“delegate”。您需要更改此行中的UIViewController:“UIViewController*SelectDatePover=[self.storyboard…”以选择DatePover(这是您的类名--最好将其大写,但由于您没有这样做,您可能希望更改实例的名称,使它们不一样)。警告消失了..但我仍然无法使委托正常工作:(请更新您的问题以显示您正在尝试的代码。什么现在不起作用?您登录时委托是否仍然为零?@KedariTheja,这是一个输入错误:initWithContentViewController:SelectDatePoover。它现在应该是initWithContentViewController:SelectDatePooverInstance
- (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;
}
selectDatePopover.delegate = self;