3

ボタンを追加したカスタム UITableViewCell があり、そのボタンを viewController の IBAction に関連付けました。今私が直面している問題は、そのボタンがどのセルから作成されたかをどのように知るかです。テーブルがあり、複数の行 (カスタム UITableViewCell) があるビューコントローラーを提示すると、ユーザーがボタンを押すとアクションが呼び出されますが、どの行がそれであったかをどのように知ることができますか。

行インデックスに基づいて、値を格納する必要があるためです。

編集:私は今それについていくつかの手がかりを持っていますが、どうすればいいのかまだわかりません.

[cell.button1 addTarget:self action:@selector(addToCart:) forControlEvents:UIControlEventTouchUpInside];

そして、私はメソッドを書かなければなりません

-(IBAction) addToCart:(id) sender

しかし、まだわからないのは、addToCart メソッドで行インデックスを取得する方法です。あなたの助けに感謝。

4

4 に答える 4

20

さて、最終的に私は答えを得ました、さまざまなフォーラムを調べて、人々はこのようなことをすることを提案していました

cellForRowAtIndexPathのカスタムテーブルビューコントローラでこれを行います

cell.addToCart.tag = indexPath.row;
[cell.addToCart addTarget:self action:@selector(addToCart:)    
                               forControlEvents:UIControlEventTouchUpInside];

ここで、addToCartは、customUITableViewCellのUIButtonの名前です。それは私にはうまくいかなかったようです。だからこれは私がしたことです

-(IBAction) addToCart:(id) sender{
        NSIndexPath *indexPath = [self.tableView indexPathForCell:(UITableViewCell *)
                    [[sender superview] superview]];
    NSLog(@"The row id is %d",  indexPath.row); 
 }

次に、interfacebuilderを使用して、ボタンのアクションをテーブルビューコントローラーのaddToCartIBActionに関連付けました。

于 2010-11-08T16:22:45.123 に答える
5

ハッカー性がはるかに低い。

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


- (void)addToCart:(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];

}
于 2012-07-09T18:07:46.830 に答える
0

開発者の多くは、カスタム ビューを使用して、古いバージョンの iOS のテーブル ビューにカスタム セルを表示していました。あなたがその 1 人である場合、ボタン クリック アクションが iOS7 で機能しなくなるという問題に直面する必要があります。

これを解決する方法:

次の 2 つのオプションがあります。

オプション 1 : ビューを取得する代わりに、新しいテーブル セルを使用して新しいレイアウトを作成します。すべてのレイアウトをテーブルセルに再度配置します。

これには多くの労力が必要になることは承知しています。これをやりたくない場合は、非常に小さな裏技があります: オプション 2

オプション 2 : ボタンの IBOutlet を作成し、このボタンをセルのコンテンツ ビューのサブビューとして追加します。

[self.myCell.contentView addSubview:self.btn_click];

上記のコード行は、コンテンツ ビューのサブビューとして btn_click を追加します。これで、ボタン クリック アクションが機能するはずです。

于 2013-09-30T14:10:45.843 に答える