2016-11-07 8 views
0

こんにちは私のアプリケーションでは、テーブルビューのセルは編集可能でなければならないという要件があります。つまり、セルの順序を変更することができます。これは、私はreordercontrolを使用しています。この並べ替え制御に加え、右端だけでなくセル全体をカバーする必要があります。このため、私はディスプレイセルの方法で以下の変更を行っています。どのようにボタンは、UIViewの下にあるイベントを受け入れることができますか?

-(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath 
{ 

     for (UIView * view in cell.subviews) 
     { 

      if ([NSStringFromClass([view class]) rangeOfString: @"Reorder"].location != NSNotFound) 
      { 


       // [view setBackgroundColor:[UIColor redColor]]; 

       UIView* resizedGripView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, CGRectGetMaxX(view.frame), CGRectGetMaxY(view.frame))]; 
       [resizedGripView setBackgroundColor:[UIColor clearColor]]; 
       [resizedGripView addSubview:view]; 
       resizedGripView.backgroundColor=[UIColor clearColor]; 
       resizedGripView.userInteractionEnabled=YES; 

       [cell.contentView addSubview:resizedGripView]; 

       CGSize sizeDifference = CGSizeMake(resizedGripView.frame.size.width - view.frame.size.width, resizedGripView.frame.size.height - view.frame.size.height); 
       CGSize transformRatio = CGSizeMake(resizedGripView.frame.size.width/view.frame.size.width, resizedGripView.frame.size.height/view.frame.size.height); 

       // Original transform 
       CGAffineTransform transform = CGAffineTransformIdentity; 

       // Scale custom view so grip will fill entire cell 

       transform = CGAffineTransformScale(transform, transformRatio.width, transformRatio.height); 

       // Move custom view so the grip's top left aligns with the cell's top left 

       transform = CGAffineTransformTranslate(transform, -sizeDifference.width/2.0, -sizeDifference.height/2.0); 

       [resizedGripView setTransform:transform]; 


       for(UIImageView* cellGrip in view.subviews) 
       { 
        if([cellGrip isKindOfClass:[UIImageView class]]) 
         [cellGrip setImage:nil]; 
       } 
      } 
     } 
} 

私が使用しているセルはカスタムセルであり、セルは以下のようになります。

Custom cell

iは表示セル方式の変更の上に行った後。右端だけでなく、どこからでもセル上のセルを並べ替えることができます。表示されているように、この変更後に機能していないボタンをセル上に削除しているのは、ボタン上でも1つのビューがセルに追加されているためです。セルで利用可能なコンポーネントは、イベントを受け入れる必要があります。私を助けてください。

答えて

0

resizedGripViewcell.contentViewを追加した後で、他のコントロールを上/前に移動するコードを記述できます。コードの下に試してみてください。

[cell.contentView bringSubviewToFront:cell.btnPrice]; 
[cell.contentView bringSubviewToFront:cell.lblProduct]; 

あなたのコントロールとbtnPricelblProductを交換してください。

希望します。

+0

こんにちはmilanご返信ありがとうございます。しかし、それは動作しません:( –

+0

こんにちはミランは大いに助けてくれてありがとう私はそれが多くのおかげで仕事をすることができます –

+0

それは働いて嬉しい:) –

関連する問題