我有一个UIPickerView
,它返回带有4 NSArray
的strings
。当用户滚动UIPickerView
时,UITextField
将使用所选行进行更新。我想返回string
中每个NSArray
的第一个字符,并用该字符更新UITextField
。
从代码中可以看到,我尝试使用self.noiseLevelArray = [noiseArray sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)];
来实现此功能,我在几个不同的堆栈溢出问题中找到了它。
这是选择器的代码:
// Noise picker
self.noisePicker = [[UIPickerView alloc]init];
[noisePicker setDataSource:self];
[noisePicker setDelegate:self];
self.noiseArray = [[NSArray alloc]initWithObjects:@"4: Extreme Noise (Impossible)", @"3: Very Noisy (Loud Shouting)", @"2: Noisy (Shouting)", @"1: Not Noisy (Normally)", nil];
//self.noiseLevelArray = [noiseArray sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)];
// Call noisePicker method
[self noisePickerTextField];
这是我的选择器的代码:
// Picker components
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView {
return 1;
}
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component {
return [noiseArray count];
//return [noiseLevelArray count];
}
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {
return [noiseArray objectAtIndex:row];
//return [noiseLevelArray objectAtIndex:row];
}
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
NSString *noiseString = [[NSString alloc]initWithFormat:@"%@", [noiseArray objectAtIndex:row]];
//NSString *noiseString = [noiseLevelArray objectAtIndex:0];
if ([self.empNoise1 isFirstResponder]) {
self.empNoise1.text = noiseString;
}
else if ([self.empNoise2 isFirstResponder]) {
self.empNoise2.text = noiseString;
}
...
如您所见,无论
UITextField
中选择了哪一行,string
都会更新为完整的UIPickerView
。我希望它仍然显示完整的string
,但仅使用第一个字符(在这种情况下为UITextField
)更新1, 2, 3, or 4
。任何帮助深表感谢!
最佳答案
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
NSString *noiseString = [[NSString alloc]initWithFormat:@"%@", [[noiseArray objectAtIndex:row] substringToIndex:1]];
//NSString *noiseString = [noiseLevelArray objectAtIndex:0];
if ([self.empNoise1 isFirstResponder]) {
self.empNoise1.text = noiseString;
}
else if ([self.empNoise2 isFirstResponder]) {
self.empNoise2.text = noiseString;
}
}
尝试这个。它使用以下方法:
NSString * firstLetter = [word substringToIndex:1];
关于ios - 为UIPickerView didSelectRow返回NSArray中字符串的第一个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26035072/