Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/114.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 对两个文本字段使用相同的UIDatePicker_Ios_Objective C_Xcode_Uitextfield_Uidatepicker - Fatal编程技术网

Ios 对两个文本字段使用相同的UIDatePicker

Ios 对两个文本字段使用相同的UIDatePicker,ios,objective-c,xcode,uitextfield,uidatepicker,Ios,Objective C,Xcode,Uitextfield,Uidatepicker,我有两个文本字段,fromdate和todate。如何从同一个日期选择器中获取不同的日期。我尝试了一些方法,结果在日期更改时在两个文本字段中获取相同的日期 -(IBAction)dateValueChanged:(id)sender { UIDatePicker *picker = (UIDatePicker *)sender; NSDate *dateSelected1 = [picker date]; NSDate *dateSelected2

我有两个文本字段,fromdate和todate。如何从同一个日期选择器中获取不同的日期。我尝试了一些方法,结果在日期更改时在两个文本字段中获取相同的日期

-(IBAction)dateValueChanged:(id)sender
{
        UIDatePicker *picker = (UIDatePicker *)sender;
        NSDate *dateSelected1 = [picker date];
        NSDate *dateSelected2 = [picker date];

        NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
        [dateFormatter setDateFormat:@"dd-MM-yyyy"];
        self.fromTextField.text = [dateFormatter stringFromDate:dateSelected1];
       self.toTextField.text = [dateFormatter stringFromDate:dateSelected2];
}

您可以为两个TextFields实现
UITextFieldDelegate
协议
TextFieldDiBeginediting:
方法,同时为每个TextField设置
标记
属性,以便它们易于识别

然后,当调用
textfielddibeginediting:
时,您可以读取已开始编辑的textfield的标记,并将其设置为全局值,以便找出日期选择器应更改的textfield。。例如:

- (void)textFieldDidBeginEditing:(UITextField *)textField {

     someGlobalNSInteger = textField.tag; //the current text field tag is now globally set

}

-(IBAction)dateValueChanged:(id)sender {
    UIDatePicker *picker = (UIDatePicker *)sender;
    NSDate *dateSelected1 = [picker date];
    //NSDate *dateSelected1 = [picker date];

    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"dd-MM-yyyy"];

    //self.fromTextField.text = [dateFormatter stringFromDate:dateSelected1];
    //self.toTextField.text = [dateFormatter stringFromDate:dateSelected2];

    UITextField *activeTextField = (UITextField*)[self viewWithTag:someGlobalNSInteger]; //gets text field what is currently being edited
    [activeTextField setText:[dateFormatter stringFromDate:dateSelected1]];

}
然而,如果你不允许文本字段是可编辑的(因此它不能打开键盘),你可能需要一些其他的方法来计算哪个文本字段应该得到更新的日期,但我将留给你


希望它有帮助

实现这一点的最佳方法是使用UITextField中提供的inputview属性。使用Outlet或programming初始化日期选择器一次,并在textfield的委托方法“textFieldDidBeginEditing:”中将其指定为inputView。对于分配日期,在实际将inputview分配给textfield之前,您可以使用自己的业务逻辑。

一种更优雅的实现方法,无需
UITextFieldDelegate
textFieldDidBeginEditing:

只是检查一下


textField.tag为int,将其分配给NSInteger时会显示警告。
- (IBAction)dateValueChanged:(id)sender
{
    NSDate *dateSelected = [picker date];
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"dd-MM-yyyy"];

    if ([firstTextField isFirstResponder])
    {
      firstTextField.text = [dateFormatter stringFromDate:dateSelected];
    }
    else if ([self.endTextField isFirstResponder])
    {
        secondTextField.text = [dateFormatter stringFromDate:dateSelected];
    }
}