1

iphoneアプリ開発初心者です。私は2週間この問題に苦しんでいます。

xib の uiviewcontroller クラスで検索バーを使用して uitableview を作成しました。ここでは、カスタム セルを使用してテーブル ビューを表示しています。ここでは、画像とラベルを表示して、プロフィール画像と辞書のテキストを表示しています。カスタムセルの+および-機能のステッパー。今、ラベルにステッパーアクションを表示したい。+ボタンをクリックすると、ラベルカウントは1になり、-ボタンをクリックすると、カウントは同じセルで0になる。表示したい同じセル内のボタン数。

誰でも私を助けることができます...

ありがとうございます...

viewcontroller.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 に答える