今天在做一个图表查询的界面,因为要做两个带PickerView的textField,所以只好新建了两个继承了UITextField的class,但还是不清楚有什么方法能够从textField1.m中获取到另外一个textField2.m的值,而且也不知道有没有在UITextField中的点击触发方法(不是textFieldDidBeginEditing:(UITextField *)textField这个方法,因为这个方法是在UIViewController中调用的,就算触发也不清楚有什么办法能将请求的值传到textField2.m中),所以自己想了一些障眼法和一些思路。
1.两个textField之间的传值
实现:在controller下调用(textField1 == _Search1Field, textField == _Search2Field,以下都是,不在赘述)目的:在textfield1中的值传到textField2中,并且textField2.m中可以根据textField1的值发送请求
-(void)textFieldDidBeginEditing:(UITextField*)textField
{
// [_SecField resignFirstResponder];
if(textField ==_Search2Field) {
_Search2Field.text = _Search1Field.text; //将1的值赋值给2
_Search2Field.textColor = [UIColor whiteColor]; //并且将2中的文字设为背景色,这里是白色
NSLog(@"%@",_Search2Field.text);
}elseif(textField ==_Search1Field) {
_Search2Field.text = @"";
}
}
然后就可以在2.m的文件中通过self.text获得到textField1中的值。
2.在textField2中,根据获取到的textField1的值发送请求
目的:能够根据textField1的值,得到相应的值,并展示在Pickerview中
目前没有什么正确的方法去解决,我的做法是在textField2.m的-(void)setUp()方法中直接发送全部内容的请求,然后在数据源方法中,根据获得的值进行判断,然后将请求到的值根据判断的结果,存到定义好的数组中,就可以直接显示在pickerView中了。
代码如下:
-(void)setUp
{
//创建pickerView
UIPickerView*pickerView = [[UIPickerViewalloc]init];
pickerView.dataSource=self;
pickerView.delegate=self;
[pickerViewsetBackgroundColor:[UIColor whiteColor]];
//自定义文本框键盘
self.inputView= pickerView;
[self fakeAsync];
}
#pragma mark - 数据源方法
//PickerView 1列
-(NSInteger) numberOfComponentsInPickerView:(UIPickerView*)pickerView
{
return 1;
}
//第0列 描述搜索类型 行数
-(NSInteger)pickerView:(UIPickerView*)pickerView numberOfRowsInComponent:(NSInteger)component
{
_Section = _dataDict[@"request"][self.text];
return _Section.count;
}
PS:一些不熟练开发而想的小技巧,欢迎指正🙏🙏🙏