温馨提示:本文翻译自stackoverflow.com,查看原文请点击:iphone - Get selected row in UIPickerView for each component
cocoa-touch iphone objective-c uipickerview

iphone - 在UIPickerView中为每个组件获取选定的行

发布于 2020-04-21 13:54:08

我有UIPickerView3个组件,其中2 NSMutableArrays个组成了组件(2个组件具有相同的数组)。

一个教程说:

//PickerViewController.m
- (void)pickerView:(UIPickerView *)thePickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {

NSLog(@"Selected Color: %@. Index of selected color: %i", [arrayColors objectAtIndex:row], row);
}

但是我想UIAlertView 在用户触摸UIButton之后显示每个组件的选定行

有没有办法做到这一点?还是我必须只使用3 invisible UILabels作为缓冲区?

提前致谢。

查看更多

提问者
user142019
被浏览
12
163 2016-08-11 01:29

因此,在按钮操作方法中,您可以执行以下操作:

- (IBAction) showAlert {
  NSUInteger numComponents = [[myPickerView datasource] numberOfComponentsInPickerView:myPickerView];

  NSMutableString * text = [NSMutableString string];
  for(NSUInteger i = 0; i < numComponents; ++i) {
    NSUInteger selectedRow = [myPickerView selectedRowInComponent:i];
    NSString * title = [[myPickerView delegate] pickerView:myPickerView titleForRow:selectedRow forComponent:i];
    [text appendFormat:@"Selected item \"%@\" in component %lu\n", title, i];
  }

  NSLog(@"%@", text);
}

这将是检索信息的绝对正式方式(通过使用正确的数据源和委托方法),但是(仅取决于您的设置)(仅抓取选定的行然后将信息直接从模型中拉出)可能会更容易。 ,而不是通过委托方法。