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