Я разработал пользовательскую ячейку в Interface Builder. Значение UIStepper увеличивает случайные числа
Это многоразовая ячейка приложения для электронной коммерции. Проблема заключается в UIStepper.I может иметь любое количество этих ячеек на основе количества элементов, добавленных пользователем в корзину. Так что проблема в том, что если я увеличиваю значения шагового элемента ячейки 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];
}
Реализация функции в контроллере просмотра приведена ниже.
-(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);
}
Значение обновляется в Product Model. Для примера. Если я выберу Qty 8 в ячейке 1, Qty 5 в ячейке 2, Qty 7 в ячейке 3, если я увеличиваю значение в ячейке 4, он скачет прямо от 1 до некоторого случайного значения, такого как 10 или около того. EDIT: метод cellForRowAtIndexPath выглядит следующим образом
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *cartItemCellIdentifier [email protected]"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 в методе itself.So я получаю, который был шагового clicked.But до сих пор я получаю случайные значения.
Не пропускайте ' cellRow' в ваш метод делегата, передайте ячейку (то есть 'self'), затем используйте' indexPathForCell' в вашем методе делегата, чтобы определить, какая строка была затронута – Paulw11