Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/107.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 为什么此按钮出现在所有UITextField选择中?_Ios_Objective C_Xcode - Fatal编程技术网

Ios 为什么此按钮出现在所有UITextField选择中?

Ios 为什么此按钮出现在所有UITextField选择中?,ios,objective-c,xcode,Ios,Objective C,Xcode,我有一个UITableViewCell,其中有一个文本字段,应该用于日期选择器。我需要做一个自定义按钮来保存日期。但是,每当我选择任何UITableViewCell文本字段时,按钮就会出现。为什么会这样 我只是想把它“提交”到文本字段以便保存它 谢谢 - (void)textFieldDidBeginEditing:(UITextField *)dateFieldText { UIBarButtonItem *doneButton = [[UIBarButtonItem

我有一个UITableViewCell,其中有一个文本字段,应该用于日期选择器。我需要做一个自定义按钮来保存日期。但是,每当我选择任何UITableViewCell文本字段时,按钮就会出现。为什么会这样

我只是想把它“提交”到文本字段以便保存它

谢谢

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

    UIBarButtonItem *doneButton = [[UIBarButtonItem alloc]
                                   initWithTitle:@"Save Date"
                                   style:UIBarButtonItemStyleDone
                                   target:self
                                   action:@selector(flipView)];
    self.navigationItem.rightBarButtonItem = doneButton;
    UIDatePicker *datePicker = [[UIDatePicker alloc] init];
    datePicker.datePickerMode = UIDatePickerModeDateAndTime;
    [datePicker addTarget:self action:@selector(datePickerValueChanged:) forControlEvents:UIControlEventValueChanged];
    [self.dateFieldText setInputView:datePicker];


}
更新

使用if-else块解决了我的问题

- (void)textFieldDidBeginEditing:(UITextField *)sender
{
    sender.delegate = self;
        if([sender isEqual:dateFieldText])
        {
            UIBarButtonItem *doneButton = [[UIBarButtonItem alloc]
                                           initWithTitle:@"Save"
                                           style:UIBarButtonItemStyleDone
                                           target:self
                                           action:@selector(saveDate)];
            self.navigationItem.rightBarButtonItem = doneButton;
            UIDatePicker *datePicker = [[UIDatePicker alloc] init];
            datePicker.datePickerMode = UIDatePickerModeDateAndTime;
            [datePicker addTarget:self action:@selector(datePickerValueChanged:) forControlEvents:UIControlEventValueChanged];
            [self.dateFieldText setInputView:datePicker];
        }
        else{
            UIBarButtonItem *submitButton = [[UIBarButtonItem alloc]
                                           initWithTitle:@"Done"
                                           style:UIBarButtonItemStyleDone
                                           target:self
                                           action:@selector(submitList)];
            self.navigationItem.rightBarButtonItem = submitButton;
        }  
    }

谢谢您的帮助。

是否重复使用表视图单元格?您可以考虑为日期字段创建一个新的单元格,并从其他单元格中赋予不同的重用标识符。 您应该仅将数据选择器设置为预期的文本字段,即您应该添加一个if条件,以便仅将日期选择器添加到必填字段,而不是所有字段。

不,我不是。但这不是dateFieldText的用途吗?因为方法是“textFieldDidBeginEditing:”。您已将self设置为所有单元格文本字段的代理。就是这样,当你们开始在文本字段中输入时,它会添加一个按钮
- (void)textFieldDidBeginEditing:(UITextField *)sender
{
    sender.delegate = self;
        if([sender isEqual:dateFieldText])
        {
            UIBarButtonItem *doneButton = [[UIBarButtonItem alloc]
                                           initWithTitle:@"Save"
                                           style:UIBarButtonItemStyleDone
                                           target:self
                                           action:@selector(saveDate)];
            self.navigationItem.rightBarButtonItem = doneButton;
            UIDatePicker *datePicker = [[UIDatePicker alloc] init];
            datePicker.datePickerMode = UIDatePickerModeDateAndTime;
            [datePicker addTarget:self action:@selector(datePickerValueChanged:) forControlEvents:UIControlEventValueChanged];
            [self.dateFieldText setInputView:datePicker];
        }
        else{
            UIBarButtonItem *submitButton = [[UIBarButtonItem alloc]
                                           initWithTitle:@"Done"
                                           style:UIBarButtonItemStyleDone
                                           target:self
                                           action:@selector(submitList)];
            self.navigationItem.rightBarButtonItem = submitButton;
        }  
    }