如何在 UITableView 中获取 UIPickerView 值

Posted

技术标签:

【中文标题】如何在 UITableView 中获取 UIPickerView 值【英文标题】:How to get UIPickerView value in UITableView 【发布时间】:2014-01-30 06:33:28 【问题描述】:

我的 UITableViewController 的每一行都有一个 UIPickerView

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

 CartCell *cell = (CartCell *)[tableView dequeueReusableCellWithIdentifier:@"CartCell"];
    Cart *cart = (self.carts)[indexPath.row];
   cell.productnameLabel.text = cart.productname;
   cell.priceLabel.text = cart.price;

 picker = [[UIPickerView alloc]initWithFrame:CGRectMake(70, 0, 100, 40)];
    [picker setDelegate:self];

    arrayColors = [[NSMutableArray alloc] init];
[arrayColors addObject:@"Red"];
[arrayColors addObject:@"Orange"];
[arrayColors addObject:@"Yellow"];
[arrayColors addObject:@"Green"];
[arrayColors addObject:@"Blue"];
[arrayColors addObject:@"Indigo"];
[arrayColors addObject:@"Violet"];

    [cell addSubview:picker];

return cell;

我有选择器的 didSelectRow

- (void)pickerView:(UIPickerView *)thePickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component 

    NSLog(@"Selected Color: %@. Index of selected color: %i", [arrayColors objectAtIndex:row], row);
    NSIndexPath *path = [self.tableView indexPathForSelectedRow];
         NSLog(@"indexPathForSelectedRow  %@", path);


但我将路径值设为空。 。我需要每一行的选择器值。

【问题讨论】:

你想要什么,为什么要创建每个单元格 UIPickerView 和 NSMutableArray ? 我在这张表中列出了购物车。我想更新购物车中产品的数量(或颜色)。 【参考方案1】:

试试这个...

UITableViewCell *cell = (UITableViewCell *)[thePickerView superview];
NSIndexPath *path = [self.tableView indexPathForCell:cell];
NSLog(@"indexPathForSelectedRow  %@", path);

【讨论】:

indexPathForCell 也返回空值。是因为自定义单元格吗? 很抱歉我没有提到我的 sdk 版本。它是ios。我从这个链接***.com/questions/18743099/… 得到了解决方案 和修改代码 - (void)pickerView:(UIPickerView *)thePickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component UIView *view = thePickerView; while (view != nil && ![view isKindOfClass:[UITableViewCell class]]) view = [view superview]; UITableViewCell *cell = (UITableViewCell *)view; NSIndexPath *path = [self.tableView indexPathForCell:cell]; NSLog(@"indexPathForSelectedRow %@", 路径); NSLog(@"section 为 %d,row 为 %d", path.section, path.row); hmn... 一切都很好,如果您使用 CartCell 代替 UITableViewCell 会更好。排队 while (view != nil && ![view isKindOfClass:[UITableViewCell class]]) 我试过 CartCell *cell = (CartCell *)[thePickerView superview];但同样的空结果来了。但它适用于 UIView while 循环。不知道为什么它不能与 CartCell 一起使用。

以上是关于如何在 UITableView 中获取 UIPickerView 值的主要内容,如果未能解决你的问题,请参考以下文章

如何在 tableView:(UITableView *)tableView heightForRowAtIndexPath 函数中获取单元格对象?

如何在 UITableView 按钮中快速获取特定的行按钮标题

在 Swift 中,如何从 UITableView 中获取对象 id 并根据对象 id 删除对象?

如何在自定义 UITableView 中获取文本字段

如何在 UITableview 中使用 UISearchBar 在本地 JSON 中获取数据?

如何在运行时获取 UITableView 的内容大小?