Я разработал пользовательскую ячейку в конструкторе интерфейсов.
Это повторно используемая ячейка приложения корзины электронной коммерции. Проблема заключается в UIStepper. У меня может быть любое количество этих ячеек в зависимости от количества элементов, которые пользователь добавляет в корзину. Таким образом, проблема заключается в том, что если я увеличиваю значения степпера ячеек 1,2 и 3. Значение из ячейки 4 будет начинаться с некоторого случайного числа, а не с одного. В настоящее время я читаю значения из файла .plist, создаю модель продукта, сохраняю их в модели и создаю массив моделей продуктов. Данные отображаются из массива. Я создал делегата для получения значений из пользовательской ячейки в контроллер представления. Функция изменения шагового значения показана ниже.
- (IBAction)valueChangedAction:(UIStepper *)sender {
NSLog(@"sender.value ---------- %f",sender.value);
self.stepperCount = sender.value;
self.cartItemQuantityLabel.text=[NSString stringWithFormat:@"%ld",(long)self.stepperCount];
[self.delegate valueDidChangeStepper:self.stepperCount cellRow:self.cellRow];
}
Реализация функции в View Controller показана ниже.
-(void)valueDidChangeStepper:(NSInteger)valueofStepper cellRow:(NSInteger)cellRow
{
ProductModel *productModel=[productsArray objectAtIndex:cellRow];
productModel.cartItemQuantity=[NSString stringWithFormat:@"%d",valueofStepper];
NSLog(@"stepper value %d from row %d",valueofStepper,cellRow);
}
Значение обновляется в модели продукта. Например Если я выберу Qty 8 в ячейке 1, Qty 5 в ячейке 2, Qty 7 в ячейке 3, если я увеличу значение в ячейке 4, оно сразу перейдет от 1 к некоторому случайному значению, например 10 или около того. РЕДАКТИРОВАТЬ: метод cellForRowAtIndexPath выглядит следующим образом
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *cartItemCellIdentifier =@"CartItemCell";
CartItemCell *cartItemCell =[self.cartTableView dequeueReusableCellWithIdentifier:cartItemCellIdentifier];
if(itemsArray)
{
ProductModel *productFromArray=[productsArray objectAtIndex:indexPath.row];
cartItemCell.cartItemNameLabel.text=productFromArray.cartItemName;
cartItemCell.cartItemQuantityLabel.text=productFromArray.cartItemQuantity;
cartItemCell.cartItemCostLabel.text=productFromArray.cartItemCost;
cartItemCell.cartItemImage.image=[UIImage imageNamed:productFromArray.cartItemImage];
cartItemCell.cellRow=indexPath.row;
cartItemCell.delegate=self;
}
return cartItemCell;
}
Я установил Cellrow как indexpath.row в самом методе. Таким образом, я получаю, какой степпер был нажат. Но все же я получаю случайные значения.
cellRow
в свой метод делегата, передайте ячейку (т.е.self
), затем используйтеindexPathForCell
в своем методе делегата, чтобы определить, какая строка была затронута - person Paulw11   schedule 30.08.2016