无法从弹出窗口中的日历为 UITextField 设置值

Posted

技术标签:

【中文标题】无法从弹出窗口中的日历为 UITextField 设置值【英文标题】:Can't set value to UITextField from calendar in popover 【发布时间】:2011-12-08 16:17:25 【问题描述】:

嗯,在我的应用程序中有一个文本字段,其中包含一些日期。文本字段对用户来说是不可编辑的,但它要求带有日历的弹出窗口(Tapku 日历,顺便说一句)。我需要将日历中的选定日期粘贴到此文本字段中。我正在尝试此代码,但它对我不起作用。

Calendar_Popover_Controller.m 中的代码:

// grab (NSString*)Date from calendar and sending it to ChekIn field
- (void)calendarMonthView:(TKCalendarMonthView *)monthView didSelectDate:(NSDate *)d 

NSDate *calendarSelectedDate = [[NSDate alloc] init];
/* Here is formattedDate */

calendarSelectedDate = [calendar dateSelected];
DateForMainView = [formattedDate stringFromDate:calendarSelectedDate];

ViewController *submittedDateToMainView = [[ViewController alloc] init];
submittedDateToMainView.CheckInField.text = [formattedDate stringFromDate:calendarSelectedDate];

我还检查了其他变体。好像是这样的:

Calendar_Popover_Controller.m

- (void)calendarMonthView:(TKCalendarMonthView *)monthView didSelectDate:(NSDate *)d 

NSDate *calendarSelectedDate = [[NSDate alloc] init];;
/* formattedDate */

calendarSelectedDate = [calendar dateSelected];
DateForMainView = [formattedDate stringFromDate:calendarSelectedDate];
ViewController *submittedDateToMainView = [[ViewController alloc] init];
submittedDateToMainView.DateFromCalendar = DateForMainView;

ViewController.m 中的代码:

- (BOOL)popoverControllerShouldDismissPopover:(UIPopoverController *)popoverController 
[CheckInField setText:DateFromCalendar];

NSLog(@"For CheckIn TextField DateFromCalendar is: %@", DateFromCalendar);
NSLog(@"popover about to be dismissed");
return YES;

这里 DateFromCalendar == nil 无论如何。我不知道如何解决这个问题。

【问题讨论】:

【参考方案1】:

你在calendarMonthView:didSelectDate:方法中使用的ViewController不是屏幕上显示的那个,因为你在做的时候初始化了一个新的

ViewController *submittedDateToMainView = [[ViewController alloc] init];

您需要在 Calendar_Popover_Controller 中保留对现有 ViewController 的引用,并在该引用上设置 DateFromCalendar

【讨论】:

谢谢!我明白,你在说什么,但你能展示一些示例代码吗?我是 Xcode 的新手。

以上是关于无法从弹出窗口中的日历为 UITextField 设置值的主要内容,如果未能解决你的问题,请参考以下文章

无法从弹出窗口列表中选择项目 - android

UIActionSheet 应该从弹出窗口中调用,但从主屏幕底部显示

如何从弹出窗口向 boxlayout 添加新标签?

从弹出窗口设置localStorage

Kendo Grid - 从弹出窗口编辑后刷新行

从弹出窗口上的编辑文本中获取文本