我有UIPickerView
,其中NSArray
返回4 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
)。非常感谢任何帮助!
答案 0 :(得分:2)
试试这个......`
self.empNoise1.text = [noiseString substringToIndex:1];`
返回一个新字符串,其中包含接收者的字符,但不包括给定索引处的字符。
答案 1 :(得分:2)
- (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];