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 作为按钮标记传递。就是这样。

我已经给出了样本

//创建你的单元格然后执行以下操作

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 方法中

您像这样将标签设置为 Button

btn.tag=indexpath.row;

在 Button Action 方法中,您可以使用此行检索标记值

Button 的操作方法 -(void)btnAction:(id)sender

{

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

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

// 从这个字典中你不能访问 status 键值

}

我希望这个对你有用

于 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 回答