1

我是 iphone 应用程序开发的新手。两周以来,我一直在遭受这个问题的困扰。

我在 xib 的 uiviewcontroller 类中使用搜索栏创建了 uitableview。这里我正在显示带有自定义单元格的表格视图。在自定义单元格中,我在 xib 中创建了 uistepper、三个标签和一个图像。在这里,我正在显示图像和标签以显示字典中的个人资料图像和文本。自定义单元格中 + 和 - 功能的步进器。现在我想在标签中显示步进器操作。当我单击 + 按钮时,标签计数将为 1,当我单击 - 按钮时,同一单元格中的计数将为 0。我想显示同一单元格中的按钮计数。

谁能帮我...

谢谢大家...

视图控制器.m

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
 {
   static NSString *CellIdentifier = @"ListOfProductsCell";
            
   ListOfProductsCell *cell = (ListOfProductsCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];

        
if (cell == nil) {
                   
   NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"ListOfProductsCell" owner:self options:nil];
   cell = [nib objectAtIndex:0];
               
     productItemDit=[productListArry objectAtIndex:indexPath.row];
            NSString *offerStr= [NSString stringWithFormat:@"%.2f",[[productItemDit objectForKey:@"offer"] floatValue]];
            NSString *fullCostStr=[[currencyCodeStr stringByAppendingString:@" "] stringByAppendingString:offerStr];
            NSLog(@"%@",fullCostStr);
            cell.itemCostLbl.text=fullCostStr;
            
            cell.itemStepper.tag=166;
            cell.itemAddedLbl.tag=122;
        
            cell.itemImg.image = [UIImage imageNamed:@"profp.jpg"];
            
  }
      
    
         if (tableView == self.searchDisplayProduct.searchResultsTableView) {
                searchProductItemDit=[searchProductListArry objectAtIndex:indexPath.row];
                NSLog(@"searchdit:%@",searchProductItemDit);
                cell.itemNameLbl.text= [searchProductItemDit objectForKey:@"name"];
                self.searchDisplayProduct.searchResultsTableView.separatorColor=[UIColor colorWithRed:200.0 green:0.0 blue:0.0 alpha:1.0];
            } else {
                productItemDit=[productListArry objectAtIndex:indexPath.row];
                NSLog(@"dit:%@",productItemDit);
                cell.itemNameLbl.text=[productItemDit objectForKey:@"name"];
                
            }
        cell.itemAddedLbl =(UILabel*)[cell viewWithTag:122];
        cell.itemAddedLbl.text = [[NSString alloc] initWithFormat:@"%d",itemCount];
        return cell;

}

ListOfProducts.m

//this method in custom class to get stepper action     
-(IBAction)itemValueChanged:(UIStepper *)sender
{
   ListOfProductsCell *clickedCell = (ListOfProductsCell *)[[sender superview] superview];
    double stepperValue = itemStepper.value;
     itemAddedLbl=(UILabel*)[clickedCell viewWithTag:122];
    itemAddedLbl.text=[[NSString alloc] initWithFormat:@"%.f", stepperValue];
                
 }
  

当我在它上面完美使用时。但是当滚动表格视图时,我从步进器添加的值消失了

4

2 回答 2

1

使用它来添加自定义按钮或标签并为其分配标签i.e. indexpath.row

 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    {
        static NSString *CellIdentifier = @"Cell";
        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
        if (cell == nil) {
            cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
        }


      // Add  Custom Button 
        cellLikeBtn=[[UIButton alloc]init];
        cellLikeBtn.frame=CGRectMake(262, 5, 48,62);

        cellLikeBtn.backgroundColor=[UIColor whitecolor];
        cellLikeBtn.tag=indexPath.row;
        [cellLikeBtn addTarget:self action:@selector(Checktag:) forControlEvents:UIControlEventTouchUpInside];
        [cell.contentView addSubview:cellLikeBtn];
        [cellLikeBtn release];

    }

现在您将获得自定义标签或按钮的标签。您可以使用它进行更改。

 -(IBAction)Checktag:(UIButton *)sender
    {
        NSLog(@"%d",sender.tag);
        UIButton* button = (UIButton *) sender;
        UIImage *image = [UIImage imageNamed:@"abc.png"];
        [button setImage:image forState:UIControlStateNormal];

    }

在您的情况下用标签替换按钮。

我希望这能解决问题。

您可以按如下方式使用它:

像这样在 cellforRowAtIndexPath 分配你的方法

[cell.contentView addTarget:self action:@selector(Checktag:event:)forControlEvents:UIControlEventTouchUpInside];

- (void)Checktag:(id)sender event:(id)event
{
    NSSet *touches = [event allTouches];
    UITouch *touch = [touches anyObject];
    CGPoint currentTouchPosition = [touch locationInView:self.tableView];
    NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint: currentTouchPosition];

   NsLog("value of indePath.section %d ,indexPath.row %d",indexPath.section,indexPath.row);

}
于 2013-06-24T06:18:13.987 回答
0

使用此代码作为参考。根据您的要求对此代码进行更改。我已经编辑了你的代码,并尽量不做大的改变。但严重的是,您的代码不清楚且混乱。您可以清理代码并使其变得更好。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    {
        static NSString *CellIdentifier = @"ListOfProductsCell";

        ListOfProductsCell *cell = (ListOfProductsCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];

        if (cell == nil) {
            cell = [[[NSBundle mainBundle] loadNibNamed:@"ListOfProductsCell" owner:self options:nil]objectAtIndex:0];
        }

            productItemDit=[productListArry objectAtIndex:indexPath.row];
            NSString *offerStr= [NSString stringWithFormat:@"%.2f",[[productItemDit objectForKey:@"offer"] floatValue]];
            NSString *fullCostStr=[[currencyCodeStr stringByAppendingString:@" "] stringByAppendingString:offerStr];
            NSLog(@"%@",fullCostStr);
            cell.itemCostLbl.text=fullCostStr;

            cell.itemStepper.tag=indexPath.row+indexPath.section+1;
            cell.itemAddedLbl.tag=indexPath.row+indexPath.section+101;

            cell.itemImg.image = [UIImage imageNamed:@"profp.jpg"];

         if (tableView == self.searchDisplayProduct.searchResultsTableView) {
                searchProductItemDit=[searchProductListArry objectAtIndex:indexPath.row];
                NSLog(@"searchdit:%@",searchProductItemDit);
                cell.itemNameLbl.text= [searchProductItemDit objectForKey:@"name"];
                self.searchDisplayProduct.searchResultsTableView.separatorColor=[UIColor colorWithRed:200.0 green:0.0 blue:0.0 alpha:1.0];
            } else {
                productItemDit=[productListArry objectAtIndex:indexPath.row];
                NSLog(@"dit:%@",productItemDit);
                cell.itemNameLbl.text=[productItemDit objectForKey:@"name"];

            }
        cell.itemAddedLbl =(UILabel*)[cell viewWithTag:indexPath.row+indexPath.section+1];
        cell.itemAddedLbl.text = [[NSString alloc] initWithFormat:@"%d",itemCount];
        return cell;
    }

-(IBAction)itemValueChanged:(UIStepper *)sender
{
   ListOfProductsCell *clickedCell = (ListOfProductsCell *)[[sender superview]  superview];
    itemAddedLbl=(UILabel*)[clickedCell viewWithTag:sender.tag+100];
     double stepperValue = sender.value;
    itemAddedLbl.text=[[NSString alloc] initWithFormat:@"%.f", stepperValue];

 }
于 2013-06-24T06:47:31.877 回答