返回NSArray中UIPickerView didSelectRow的字符串的第一个字符

时间:2014-09-25 09:30:03

标签: ios objective-c uitextfield nsarray uipickerview

我有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)。非常感谢任何帮助!

2 个答案:

答案 0 :(得分:2)

试试这个......`

self.empNoise1.text = [noiseString substringToIndex:1];`

返回一个新字符串,其中包含接收者的字符,但不包括给定索引处的字符。

Link

答案 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];