gpt4 book ai didi

ios - Datepicker 在文本字段 iOS 8 上崩溃

转载 作者:塔克拉玛干 更新时间:2023-11-02 10:02:40 24 4
gpt4 key购买 nike

我用过UIDatePickerUITextField 上.我有新闻 UITextField第一次使用日期选择器选择日期(应用程序正常工作),第二次我再次按下 UITextField选择在 UITextField 上设置的新日期使用 UIDatePicker然后应用程序崩溃。

我没有使用 UITableView ,我使用的是 viewController 的简单 View .

请帮助我...

谢谢

 - (void)viewDidLoad
{
[super viewDidLoad];

form=[[NSDateFormatter alloc]init];
[form setDateFormat:@"MM-dd-yyyy"];
datePicker=[[UIDatePicker alloc]init];//Date picker
datePicker.frame=CGRectMake(0,0,320, 216);
datePicker.backgroundColor = [UIColor whiteColor];

}


- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField{
BOOL a;
if (textField.tag==10) {


UIViewController* popoverContent = [[UIViewController alloc] init]; //ViewController

UIView *popoverView = [[UIView alloc] init]; //view
popoverView.backgroundColor = [UIColor blackColor];


datePicker.datePickerMode = UIDatePickerModeDate;
[datePicker setMinuteInterval:5];
[datePicker setTag:10];



[datePicker addTarget:self action:@selector(Result) forControlEvents:UIControlEventValueChanged];
[popoverView addSubview:datePicker];

popoverContent.view = popoverView;
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:popoverContent];
navigationController.delegate=self;


popoverController = [[UIPopoverController alloc]
initWithContentViewController:navigationController];
popoverController.delegate=self;


[popoverController setPopoverContentSize:CGSizeMake(320, 250) animated:NO];


[popoverController presentPopoverFromRect:textField.frame inView:self.addView permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];
a=NO;

}
else
{
a=YES;
}
return a;
}

-(void)Result
{
NSDateFormatter *formDay = [[NSDateFormatter alloc] init];
formDay.dateFormat=@"MM-dd-yyyy";
NSString *day = [formDay stringFromDate:[datePicker date]];
self.edit_dob.text = day;
}

错误

*** Assertion failure in -[UIPickerTableView _createPreparedCellForGlobalRow:withIndexPath:willDisplay:], /SourceCache/UIKit/UIKit-3318.16.14/UITableView.m:9269
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'UITableView dataSource is not set'

我分享了一张截图。我第一次成功地选择了日期,当我在该文本字段上按下以重置新日期时,应用程序崩溃了。

enter image description here

最佳答案

datePicker.datePickerMode = UIDatePickerModeDate;
[datePicker setMinuteInterval:5];
[datePicker setTag:10];

[datePicker addTarget:self action:@selector(Result) forControlEvents:UIControlEventValueChanged];
[popoverView addSubview:datePicker];

每次文本字段获得焦点时,您都​​在重复这些操作。这种做法是完全错误的,并且是导致您遇到的各种意外行为的潜在原因。它第一次起作用的事实让我认为这些不必要的重复 Action 之一是罪魁祸首。 (我敢打赌 addTarget:forControlEvents: 方法调用。在任何情况下都不应该这样做。我什至不知道当你再次尝试添加相同的目标时会发生什么。)

你应该更好地构建你的代码,使这些方法只调用一次,而不是像你显示的代码中那样多次调用(例如,在 viewDidLoad 而不是 textFieldShouldBeginEditing:) 并且很可能错误会消失。

关于ios - Datepicker 在文本字段 iOS 8 上崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27656186/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com