我遇到的问题是,我不确定如何将touchupinside添加到保存日期按钮的下面的代码中。我只是尝试启动UIDatePicker并将日期提交到文本字段中,然后将其关闭。
所以我不知道如何将这个以编程方式创建的按钮链接到datePicker方法。不仅如此,我之前没有使用UIDatePicker,所以将它读入文本字段我有点模糊。文本字段是dateFieldText。
用户点击保存日期后,应取消UIDatePicker。
感谢您的帮助。这个问题对我来说有点复杂。
- (void)textFieldDidBeginEditing:(UITextField *)sender
{
sender.delegate = self;
if([sender isEqual:dateFieldText])
{
UIBarButtonItem *doneButton = [[UIBarButtonItem alloc]
initWithTitle:@"Save Date"
style:UIBarButtonItemStyleDone
target:self
action:@selector(datePicker)];
self.navigationItem.rightBarButtonItem = doneButton;
}
else{
UIBarButtonItem *submitButton = [[UIBarButtonItem alloc]
initWithTitle:@"Done"
style:UIBarButtonItemStyleDone
target:self
action:@selector(datePicker)];
self.navigationItem.rightBarButtonItem = submitButton;
}
}
-(IBAction)datePicker
{
UIDatePicker *datePicker = [[UIDatePicker alloc] init];
datePicker.datePickerMode = UIDatePickerModeDateAndTime;
[datePicker addTarget:self action:@selector(saveDate) forControlEvents:UIControlEventValueChanged];
[self.dateFieldText setInputView:datePicker];
}
// I haven't made the saveDate method yet...
答案 0 :(得分:1)
你有一些错误连接的东西。您需要在创建文本字段的位置将日期选择器设置为文本字段的inputView,而不是在用户点击未添加的按钮之后,直到用户将焦点放在文本字段上。
您也不需要“完成”按钮和“保存日期”按钮。要么有一个完成按钮,要么有一个保存和取消按钮。
您还需要实施textFieldDidEndEditing
委托方法来删除您添加的所有按钮。
您的saveDate
方法需要使用当前选定的日期更新文本字段的文本(将日期转换为带有NSDateFormatter
的字符串后)。
完成/保存/取消按钮的操作(无论你最终做什么)只需要在文本字段上调用resignFirstResponder
。这将取消日期选择器。按钮操作可能还需要根据需要保存或恢复日期值。