1

私はIOS開発に不慣れです。行数が少なく、各行の前にボタンがあるアプリに取り組んでいます。cellForRowAtIndexPathで、buttonPressed()という関数を作成しました。その関数で、クリックしたボタンにのみ対応するデータを取得したいと思います。これを手伝ってくれませんか。

これが私がしていることです。

   -(void) buttonPressed: (id) sender withEvent: (UIEvent *) event 
   {
       UITouch *touch= [[event allTouched] anyObject];
       CGPoint location = [touch locationInView: self.tableView];
       NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:location];
       trackedUser = [searchResult obectAtIndex:indexPath.row];
   }

trackedUserは、名前、IDなどのユーザーの詳細を含むクラスのオブジェクトです。また、SearchResultは、テーブルビューコントローラーでユーザー名のリスト(検索バーでの検索時)を表示する配列です。

4

3 に答える 3

0

Modify your cellForRowAtIndexPath-Adding button to cell code like below

UIButton *yourButton = [[UIButton alloc] initWithtarget:..] //creating UIButton with frame and target method
yourButton.tag= indexPath.row;
[cell addSubview:yourButton];
[yourButton release];

Then modify your buttonPressed method as below

-(void) buttonPressed: (id) sender withEvent: (UIEvent *) event 
{
       UIButton *myBtn = (UIButton *)sender;
       trackedUser = [searchResult obectAtIndex:myBtn.tag];
}
于 2012-09-21T11:57:45.980 に答える
0
//Instead of using Touch Handlers, you can make it more simple!!

データソースにcellForRowAtIndexPathタグを追加していいUIButtonyourButton.tag = indexPath.row;

-(void) buttonPressed: (UIButton *) sender 
{
    NSLog(@"The row %d button was pressed",sender.tag);

    //To get data, simply pass sender.tag as index in your NSArray or WhatEver you're using for storing data.
}
于 2012-09-21T11:10:50.870 に答える
0

ボタンを作成するときは、タグをボタンに設定します。

btn.tag= indexPath.row;

ボタンを押すと、タグ値の付いたボタンにアクセスします

-(void) buttonPressed: (UIButton *) sender 
{
    UIButton *btn = (UIButton*)sender;
    switch (btn.tag) {
        case 0:
            //Thing you want to perform
            break;

        default:
            break;
    }
}
于 2012-09-21T11:46:19.237 に答える