[英]display the selected value from picker view to particularlabel of a cell of collection view
我有一個collectionview單元格,其中包含帶有標簽和按鈕的標簽。當我單擊按鈕時,選擇器視圖打開,我在選擇行上選擇了一個值。現在我想用選定的值更新特定單元格的標簽,但是標簽的所有單元格已更新。當我從選擇器中選擇一個值時,我該如何更新單個標簽。
**- (UICollectionViewCell *)collectionView:
(UICollectionView*)collectionView cellForItemAtIndexPath:(NSIndexPath*)indexPath
{
UICollectionViewCell *cell ;
static NSString *identifier = @"Cell";
{
cell = [collectionView dequeueReusableCellWithReuseIdentifier:identifier forIndexPath:0];
NSURL *urlImage = [NSURL URLWithString:[NSString stringWithFormat:@"%@%@",APIImageURL, [[infoArray objectAtIndex:indexPath.row] valueForKey:@"product_image"]]];
RemoteImageView *productImageView = (UIImageView *)[cell viewWithTag:100];
productImageView .imageURL = urlImage;
UILabel *lblProductName = (UILabel *)[cell viewWithTag:101];
[lblProductName setText:[[infoArray objectAtIndex:indexPath.row] valueForKey:@"product_name"]];
NSArray *arrayProductQuantity =[[infoArray objectAtIndex:indexPath.row] valueForKey:@"product_qty"];
for (NSDictionary *dicQuantity in arrayProductQuantity)
{
NSLog(@"quantity_name %@",[dicQuantity valueForKey:@"quantity_name"]);
if([arrayProductQuantity objectAtIndex:0])
{
NSString*prodctPrice =[[infoArray objectAtIndex:indexPath.row] valueForKey:@"product_price"];
float value = [prodctPrice intValue];
NSString* qntyValue =[dicQuantity valueForKey:@"value"];
float quntyValueInt=[qntyValue intValue];
if([qntyValue isEqual:@"1000"])
{
value=(value/1000*quntyValueInt);
float roundedValue = round(2.0f * value) / 2.0f;
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setMaximumFractionDigits:1];
[formatter setRoundingMode: NSNumberFormatterRoundDown];
NSString *numberString = [formatter stringFromNumber:[NSNumber numberWithFloat:roundedValue]];
UILabel *lblProductprice = (UILabel *)[cell viewWithTag:102];
[lblProductprice setText:numberString];
UILabel *lblProductQuantity = (UILabel *)[cell viewWithTag:103];
lblProductQuantity.text = [dicQuantity valueForKey:@"quantity_name"] ;
UILabel *selectedCategory = (UILabel *)[cell viewWithTag:604];
selectedCategory.text = lblRow.text;
}
else
{
value=ceil(value/1000*quntyValueInt);
float roundedValue = round(2.0f * value) / 2.0f;
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setMaximumFractionDigits:1];
[formatter setRoundingMode: NSNumberFormatterRoundDown];
NSString *numberString = [formatter stringFromNumber:[NSNumber numberWithFloat:roundedValue]];
UILabel *lblProductprice = (UILabel *)[cell viewWithTag:102];
[lblProductprice setText:numberString];
lblProductQuantity = (UILabel *)[cell viewWithTag:103];
lblProductQuantity.text = [dicQuantity valueForKey:@"quantity_name"] ;
}
}
}
}
return cell;
}
-(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
{
detailViewController* myvc1 = [self.storyboard
instantiateViewControllerWithIdentifier:@"detailViewController"];
myvc1.cat_dict=[infoArray objectAtIndex:indexPath.row];
myvc1.fromVC = @"product";
[self.navigationController pushViewController:myvc1 animated:true];
}
#pragma mark picker for choose quntity
-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
return 1;
}
-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
return [array_picker count];
}
** -(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
NSLog(@"You selected this: %@", [array_picker objectAtIndex: row]);
UILabel *selectedCategory = (UILabel *)[cell viewWithTag:604];
selectedCategory.text = lblRow.text;
} **
添加這些屬性
@property (nonatomic, assign) NSInteger selectedIndex; @property (weak, nonatomic) IBOutlet UICollectionView *collectionView;
在cellForRowatIndexPath方法中添加以下代碼
cell.button.tag = indexPath.row; [cell.button addTarget:self action:@selector(buttonClick:) forControlEvents:UIControlEventTouchUpInside];
添加新方法按鈕單擊:
- (IBAction)buttonClick:(UIButton *)sender{
self.selectedIndex = sender.tag;
// Show pickerview
}
在內部添加這些代碼(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
SampleCollectionViewCell *cell = (SampleCollectionViewCell *) [self.collectionView cellForItemAtIndexPath:[NSIndexPath indexPathForRow:self.selectedIndex inSection:0]]; // Assuming you have only single section
cell.label.text = lblRow.text;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.