iOS如何获取,当前在cellForRowAtIndexPath方法中选择了indexpath行?

时间:2011-09-12 12:59:10

标签: ios iphone objective-c uitableview uigesturerecognizer

我想在表格的每个单元格中使用标签建立链接。

单击链接时,表格将获得单元格的 [indexpath row] ,我们将使用索引与包含字符串数据的数组索引匹配。该字符串将被发送到下一个推送页面。

我正在使用 UITapGestureRecognizer 来点按标签并将参数放入选择器方法。

如何将当前索引路径行添加到所选单元格上的标签? 这是我的示例代码:

 -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
...
UITapGestureRecognizer *gestureRec = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(openUrl:) ];
gestureRec.numberOfTouchesRequired = 1;
gestureRec.numberOfTapsRequired = 1;
[cell.listPrice addGestureRecognizer:gestureRec];
[gestureRec release];
...
}


- (void)openUrl:(id)sender
{
NSLog(@"DOwnload URL send >> %@",urlDownloadSend);
DownloadNowController *download =[[DownloadNowController alloc]initWithNibName:@"DownloadNowController" bundle:nil];
[self.navigationController pushViewController:download animated:YES];
[download release]; 
}

6 个答案:

答案 0 :(得分:15)

要确定当前选定的单元格,您可以使用UITableView的下一个方法:

- (NSIndexPath *)indexPathForSelectedRow

但是我不确定在UITapGestureRecognizer被解雇后你的单元格会被选中。

我建议您将单元格的行直接存储在gestureRec.view属性中的tag中:

gestureRec.view.tag = indexPath.row;

然后在openUrl中,您可以通过获取sender.view.tag

的值来确定所选单元格

答案 1 :(得分:3)

目前还不是很清楚你想做什么..你是否在UITableViewCell上设置了一个触发其他行动的链接?

UITableViewDelegate为您提供了一些 非常酷的 方法:

– tableView:willSelectRowAtIndexPath:
– tableView:didSelectRowAtIndexPath:
– tableView:willDeselectRowAtIndexPath:
– tableView:didDeselectRowAtIndexPath:

当您点按一个单元格时,系统会调用willSelectRowAtIndexPathdidSelectRowAtIndexPath - 为您提供当前选定的NSIndexPath,您可以使用该{{3}}获取该行,如下所示:

indexPath.row;

答案 2 :(得分:2)

您可以使用全局变量来保留indexpath.row

的值

将行存储在didSelectRow:atIndexPath:方法

var = indexPath.row;
[tableView reloadData];

var = indexPath.row;
[tableView reloadData];

然后在cellForRowAtIndexPath

中使用它
if(indexPath.row==var){

}

答案 3 :(得分:1)

您可以在– tableView:willSelectRowAtIndexPath:中实施方法UITableViewDelegate。在那里,您可以轻松获取有关indexPath的信息。

答案 4 :(得分:1)

你可以这样做

in cellForRowAtIndexPath数据源方法

UIImageView* selectedBg = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"bg_selected.png"]];

cell.backgroundView = [[UIView alloc] initWithFrame: CGRectZero];
cell.selectedBackgroundView = selectedBg;
[cell.backgroundView setNeedsDisplay];
[selectedBg release];

答案 5 :(得分:0)

以下代码可用于获取当前选定的索引路径行:

save