0

現在、各行の前にボタンがある cellForRow メソッドを使用しています。

CellForRow:
JSONDecoder *decoder=[[JSONDecoder alloc] initWithParseOptions:JKParseOptionNone];
NSMutableArray *json=[decoder objectWithData:myData]; {This has a list of items in the dictionary format}

NSDictionary *dict=[json objectAtIndex:indexPath.row]; 
NSString *status=[dict valueForKey:@"status key in json"];

"dict" can be represented as:
{
   status key in json="approved";
   name="abc";
   type="resourceName";
},
{
   status key in json="rejected"; 
   name="xyz";
   type="bus";

},
{
   status key in json ="pending";
   name="pqr";
   type="resource";  
 }...and so on .

印刷ステータスは、すべての行のステータスを示します。承認済み 拒否済み 保留中

しかし、ボタンをクリックする前の特定の行のステータスのみが必要です。これは、その行の前にあるボタンをクリックしたときに、そのステータスを buttonPressed メソッドに送信するために、各行のステータスが個別に必要なためです。didSelectRow メソッドでそれをしたくありません。

特定の行に対応するボタンのクリック時にメソッドを記述できるように、特定の行の indexPath.row を取得するにはどうすればよいですか (その行をクリックすると)。

4

3 に答える 3

1

セルのサブビューとしてボタンを追加し、ボタンタグとしてindexpath.rowを渡すだけです。

サンプルをあげました

// urセルを作成し、次の手順を実行します

UIButton *objBtn=[UIButton buttonWithType:UIButtonTypeCustom];
[objBtn setFrame:CGRectMake(100,5,50,50)];
[objBtn addTarget:self action:@selector(methodWhichGetsCallOnButtonClick:)forControlEvents:UIControlEventTouchUpInside];
objBtn.tag = indexPath.row;
[cell addSubview:objBtn];

次に、「methodWhichGetsCallOnButtonClick」メソッドにビジネスロジックを追加します。

この質問も見てください。

編集:

このリンクも参照してください

これを試してみて、さらに助けが必要な場合は元に戻してください。

于 2012-10-01T12:32:47.437 に答える
0

UIButton にタグを使用できます。

cellForRowAtIndexPath メソッド内

このようにタグをボタンに設定します

btn.tag=indexpath.row;

ボタンアクションメソッドでは、この行を使用してタグ値を取得できます

ボタンのアクションメソッド -(void)btnAction:(id)sender

{

UIButton *btn=(UIButton *) 送信者;

int tagValue=btn.tag; NSDictionary *dict=[json objectAtIndex:tagValue];

// この辞書から stats キー値にアクセスすることはできません

}

私はそれがあなたのために働くことを願っています

于 2012-10-01T12:28:32.260 に答える
0

私が間違っていなければ、クリックされたボタンのセルのindexPathが必要です.次のように、そのボタンのセルを(ボタンアクションで)取得できます:

UIButton *theButton = sender;
CreatedCell *cell = (CreatedCell *)[[theButton superview] superview];

セルを取得したら、次のようにそのセルの indexPath を取得できます。

theIndexPath = [[m_TableView indexPathForCell:cell] retain];
于 2012-10-01T12:18:04.797 に答える