我正在尝试使用两个按钮在其中插入带有 uidatepicker 的 uipopover - 取消和完成。在 UIDatePicker in UIPopover 的帮助下,我能够使用 Storyboard设计布局和
How can I show a UIDatePicker inside a Popover on iPad using StoryBoard?
但是,当按下完成按钮时,我无法从 uidatepicker 到 uiviewcontroller 获取日期。我是 ios 编程的新手,我发现委托(delegate)方法非常困惑。有人可以解释一下吗?
非常感谢帮助。谢谢 :)
最佳答案
在 View Controller 中获取值的一种绝对正确的方法是实现委托(delegate)函数。如果您在技术层面上理解,这些都非常容易。我会在这里尝试解释一下。
您必须像这样在 datePickerViewcontrollerClass.h 中定义协议(protocol)
@protocol TimePopupViewControllerDelegate <NSObject> -(void)returnSelectedDate:(NSDate*)date; @end
并创建一个“id”类型的实例,以像这样传递 mainViewController 的引用。
@property (nonatomic, assign) id < TimePopupViewControllerDelegate > delegate;
在您创建 datePickerViewcontrollerClass 实例的 MainViewController.m 中,您必须像这样设置委托(delegate)
datePickerViewcontrollerClass *myViewControllerForPopover =[[datePickerViewcontrollerClass alloc] init]; myViewControllerForPopover.delegate = self;
在从 datePickerViewcontrollerClass.m 类中的选择器获取日期的方法中,您必须使用委托(delegate)将其传递给主类。
-(void)viewDidDisappear:(BOOL)animated{ [_delegate returnSelectedDate:datepicker.date]; [super viewWillDisappear:animated];
}
您可以使用我在 ViewWillDisappear 中编写的任何方法或任何其他方法来编写它。
在此之后 MainViewController 调用此方法,您可以检索所选日期
-(void)returnSelectedDate:(NSDate *)date{ }
从技术上讲,您将 mainViewController 实例的引用传递给您的 datePickerViewcontrollerClass 并从 datePickerViewcontrollerClass 调用 mainViewController 上的方法
如果您仍有任何疑问,我希望我能够清楚地解释它,您可以发表评论。
关于ios - uipopover 委托(delegate)中的 uidatepicker,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17628104/