簡體   English   中英

iOS如何獲取,當前在cellForRowAtIndexPath方法中選擇了indexpath行?

[英]iOS how to get, current selected indexpath row on cellForRowAtIndexPath method?

我想在表格的每個單元格中使用標簽建立鏈接。

單擊鏈接時,表將獲取單元格的[indexpath行] ,我們將使用索引與包含字符串數據的數組索引匹配。 該字符串將被發送到下一個推送頁面。

我正在使用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]; 
}

要確定當前選定的單元格,您可以使用UITableView下一個方法:

- (NSIndexPath *)indexPathForSelectedRow

但是我不確定在UITapGestureRecognizer觸發后你的單元格會被選中。

我建議你到細胞直接在商店排gestureRec.viewtag屬性:

gestureRec.view.tag = indexPath.row;

然后在openUrl您可以通過獲取sender.view.tag值來確定所選單元格

目前還不是很清楚你想做什么..你在UITableViewCell上有一個鏈接,它會觸發其他一些動作嗎?

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

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

當您點擊一個單元格時,將willSelectRowAtIndexPathdidSelectRowAtIndexPath - 為您提供當前選定的NSIndexPath ,然后您可以使用該NSIndexPath獲取該行,如下所示:

indexPath.row;

您可以使用全局變量來保留indexpath.row的值

將行存儲在didSelectRow:atIndexPath:方法中

var = indexPath.row;
[tableView reloadData];

var = indexPath.row;
[tableView reloadData];

然后在cellForRowAtIndexPath使用它

if(indexPath.row==var){

}

您可以在UITableViewDelegate實現方法– tableView:willSelectRowAtIndexPath: . 在那里,您可以輕松獲取有關indexPath的信息。

你可以這樣做

在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];

以下代碼可用於獲取當前選定的indexpath行:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath: (NSIndexPath *)indexPath {

 NSLog(@"selected tableview row is %ld",(long)indexPath.row);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM