[英]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.view
在tag
屬性:
gestureRec.view.tag = indexPath.row;
然后在openUrl
您可以通過獲取sender.view.tag
值來確定所選單元格
目前還不是很清楚你想做什么..你在UITableViewCell
上有一個鏈接,它會觸發其他一些動作嗎?
UITableViewDelegate
為您提供了一些非常酷的方法:
– tableView:willSelectRowAtIndexPath:
– tableView:didSelectRowAtIndexPath:
– tableView:willDeselectRowAtIndexPath:
– tableView:didDeselectRowAtIndexPath:
當您點擊一個單元格時,將willSelectRowAtIndexPath
和didSelectRowAtIndexPath
- 為您提供當前選定的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.