我创建了一个UIPicker,它有大约八个或九个可能的字符串。根据视图加载的不同,UIPicker将取决于显示的字符串。
由于这个在我的 pickerView:didSelectRow:inComponent 中,所以我想知道当用户选择一行时是否有一种方法,如果我可以获得该文本值。
这样在didselectrow方法中,我可以根据所选的字符串值执行不同的操作。
目前这就是我所拥有的:
#pragma mark - Picker Delegates
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
// get rowString somehow?
// ReloadView
if ([rowString isEqualToString:@"one Of the Values"]) {
}
// more if statements here.
}
答案 0 :(得分:3)
只需从该行的数据源中读取值,然后进行比较:
NSString *rowString = (NSString *)[self.pickerArray objectAtIndex:row];
if ([rowString isEqualToString:@"one Of the Values"]) {
}
答案 1 :(得分:1)
@Meda给了你正确的答案。您不应将数据存储在视图对象(如选取器)中。请记住,为了使UIPickerView正常工作,您必须实现方法pickerView:titleForRow:forComponent:' (or the method
pickerView:viewForRow:forComponent:reusingView:'如果你自己构建你的单元格视图)。 `pickerView:titleForRow:forComponent:' method为选择器视图的组件中的每一行提供文本,因此它必须具有可用的数据。
因此,UIPickerView的委托需要有可用的数据。 Meda的帖子假设您将其保存在数组pickerArray
中。
答案 2 :(得分:-3)
[pickerView selectedRowInComponent:0];