0

我有一个表格视图,可以从网络加载信息,并将其显示在自定义单元格中。在这些自定义单元格中,我有一个通过情节提要分配的按钮。

如果这个按钮被按下,它会触发一个方法(在 cellForRowAtIndexPath 方法中定义)

cell.viewArticleButton.action = @selector(viewArticle:); 

正是在这种方法中,我遇到了麻烦。该操作有效,只是它不使用为每个相应单元格提供的链接(每个索引路径处的链接),而是仅使用第一行的链接,无论我点击哪一行。

-(IBAction)viewArticle:(id)sender {

NSLog(@"View Article Button Tapped");

NewsCell *cell = (NewsCell *)[self.tableView dequeueReusableCellWithIdentifier:@"NewsCell"];

NSIndexPath *indexPath = [self.tableView indexPathForCell:cell]; 

MWFeedItem *item = [itemsToDisplay objectAtIndex:indexPath.row];

   // Open link from item.link

}

任何帮助,将不胜感激。我有一种感觉,就是这条线没有做我想要的:

NewsCell *cell = (NewsCell *)[self.tableView dequeueReusableCellWithIdentifier:@"NewsCell"];
4

2 回答 2

1

有了这条线:

NewsCell *cell = (NewsCell *)[self.tableView dequeueReusableCellWithIdentifier:@"NewsCell"];

您正在获取对原型(或模板)单元格的引用。这不会让您唯一地标识表格视图中的单元格。那只能识别从这个原型单元创建的一组单元。这就是为什么您总是获得第一行的原因;它返回使用此原型创建的第一个单元格。如果您只有一个具有标识符的单元格@"NewsCell"(其他单元格具有不同的标识符),那么您的实现将起作用。

要唯一标识您单击的单元格,请遵循以下线程:检测 UITableView 中按下了哪个 UIButton

于 2012-05-25T20:49:23.453 回答
0

为什么不将 NSIndexPath 中的 add 添加到方法中:

cell.viewArticleButton.action = @selector(viewArticle:indexPath);

-(IBAction)viewArticle:(id)sender {
NSIndexPath *indexPath = (NSIndexPath *)sender;

NSLog(@"View Article Button Tapped for section %d, row $d", indexPath.section, indexPath.row);

// I have no idea why you are doing this...
NewsCell *cell = (NewsCell *)[self.tableView dequeueReusableCellWithIdentifier:@"NewsCell"];


MWFeedItem *item = [itemsToDisplay objectAtIndex:indexPath.row];

   // Open link from item.link

}
于 2012-05-25T20:48:47.240 回答