Я пытаюсь настроить базовый порядок, используя UITableView. Количество ячеек варьируется в зависимости от буквы, выбранной в segmentedControl, который, в свою очередь, перезагружает ячейки в новые продукты соответственно.
Часть, с которой у меня проблема - это доступ к количеству для каждого продукта. Каждый UITableViewCell имеет изображение для продукта и пару меток вместе с UITextField и кнопкой действия. Вот код для создания моей ячейки:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
UIButton *productButton = [UIButton buttonWithType:UIButtonTypeCustom];
UIImage *productButtonImage = [[[UIImage alloc] initWithData:[NSData dataWithContentsOfFile:[[productList objectAtIndex:indexPath.row] valueForKey:@"product_small_image_filepath"] options:NSDataReadingMapped error:nil]] autorelease];
productButton.frame = CGRectMake(9.0, 3.0, 48.0, 84.0);
[productButton setBackgroundImage:productButtonImage forState:UIControlStateNormal];
[productButton setTag:indexPath.row];
[productButton addTarget:self action:@selector(loadProductDetailAtIndexPath:) forControlEvents:UIControlEventTouchDown];
UILabel *productCodeLabel = [[[UILabel alloc] initWithFrame:CGRectMake(67.0, 0.0, 300.0, 34.0)] autorelease];
productCodeLabel.tag = 100;
[productCodeLabel setBackgroundColor:[UIColor clearColor]];
[productCodeLabel setTextColor:[UIColor whiteColor]];
UILabel *productNameLabel = [[[UILabel alloc] initWithFrame:CGRectMake(67.0, 34.0, 300.0, 23.0)] autorelease];
productNameLabel.tag = 101;
[productNameLabel setBackgroundColor:[UIColor clearColor]];
[productNameLabel setTextColor:[UIColor lightGrayColor]];
UILabel *productSizeLabel = [[[UILabel alloc] initWithFrame:CGRectMake(67.0, 57.0, 300.0, 23.0)] autorelease];
productSizeLabel.tag = 102;
[productSizeLabel setBackgroundColor:[UIColor clearColor]];
[productSizeLabel setTextColor:[UIColor grayColor]];
UILabel *typeQuantityLabel = [[[UILabel alloc] initWithFrame:CGRectMake(380.0, 35.0, 100.0, 30.0)] autorelease];
typeQuantityLabel.tag = 103;
[typeQuantityLabel setBackgroundColor:[UIColor clearColor]];
[typeQuantityLabel setTextColor:[UIColor whiteColor]];
UITextField *numberOfItemsTextField = [[[UITextField alloc] initWithFrame:CGRectMake(480.0, 35.0, 150.0, 30.0)] autorelease];
numberOfItemsTextField.tag = 104;
[numberOfItemsTextField setKeyboardType:UIKeyboardTypeNumberPad];
[numberOfItemsTextField setReturnKeyType:UIReturnKeyDone];
[numberOfItemsTextField setBackgroundColor:[UIColor clearColor]];
[numberOfItemsTextField setBorderStyle:UITextBorderStyleRoundedRect];
[numberOfItemsTextField setTextAlignment:UITextAlignmentRight];
UIButton *productAddButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
productAddButton.frame = CGRectMake(650.0, 35.0, 70.0, 30.0);
productAddButton.tag = indexPath.row;
[productAddButton setBackgroundColor:[UIColor clearColor]];
[productAddButton setTitle:@"ADD" forState:UIControlStateNormal];
[productAddButton setTitleColor:[UIColor grayColor] forState:UIControlStateNormal];
[productAddButton addTarget:self action:@selector(addItemToOrderedItemsMutableArray:) forControlEvents:UIControlEventTouchDown];
[cell addSubview:productButton];
[cell addSubview:productCodeLabel];
[cell addSubview:productNameLabel];
[cell addSubview:productSizeLabel];
[cell addSubview:typeQuantityLabel];
[cell addSubview:numberOfItemsTextField];
[cell addSubview:productAddButton];
UIView *v = [[[UIView alloc] init] autorelease];
v.backgroundColor = [[UIColor clearColor] colorWithAlphaComponent:0.5];
[cell setSelectedBackgroundView:v];
}
// Configure the cell...
UIButton *productButton = [UIButton buttonWithType:UIButtonTypeCustom];
UIImage *productButtonImage = [[[UIImage alloc] initWithData:[NSData dataWithContentsOfFile:[[productList objectAtIndex:indexPath.row] valueForKey:@"product_small_image_filepath"] options:NSDataReadingMapped error:nil]] autorelease];
productButton.frame = CGRectMake(9.0, 3.0, 48.0, 84.0);
[productButton setBackgroundImage:productButtonImage forState:UIControlStateNormal];
[productButton setTag:indexPath.row];
[productButton addTarget:self action:@selector(loadProductDetailAtIndexPath:) forControlEvents:UIControlEventTouchDown];
[cell addSubview:productButton];
UILabel *productCodeLabel = (UILabel *)[cell viewWithTag:100];
[productCodeLabel setText:[[productList objectAtIndex:indexPath.row] valueForKey:@"product_code"]];
self.productCode = [[productList objectAtIndex:indexPath.row] valueForKey:@"product_code"];
UILabel *productNameLabel = (UILabel *)[cell viewWithTag:101];
[productNameLabel setText:[[productList objectAtIndex:indexPath.row] valueForKey:@"product_name"]];
UILabel *productSizeLabel = (UILabel *)[cell viewWithTag:102];
[productSizeLabel setText:[[productList objectAtIndex:indexPath.row] valueForKey:@"product_size"]];
UILabel *typeQuantityLabel = (UILabel *)[cell viewWithTag:103];
[typeQuantityLabel setText:@"QUANTITY"];
UITextField *quantityTextField = (UITextField *)[cell viewWithTag:104];
[quantityTextField setText:@"0"];
productQuantityTextField = quantityTextField;
return cell;
}
Вся информация отображается прямо на устройстве, но когда она сводится к вводу количества для отдельного продукта, количествоTextField присваивается только последней ячейке на экране. У меня вопрос: как я могу переместить этот указатель на предыдущие ячейки в UITable, чтобы иметь возможность получить значение для данного продукта?