如何在 UITableview 的 didSelectRowAtIndexPath 中实现动作?

Posted

技术标签:

【中文标题】如何在 UITableview 的 didSelectRowAtIndexPath 中实现动作?【英文标题】:How to implement action in didSelectRowAtIndexPath of UITableview? 【发布时间】:2012-06-18 03:06:20 【问题描述】:

在我看来,我以前只有几个按钮,每个按钮都有一个与之关联的操作。

    UIButton *testButton = [[UIButton alloc] initWithFrame:CGRectMake(120,300,90,90)];
    [testButton setBackgroundImage:[UIImage imageNamed:@"test.jpg"] forState:UIControlStateNormal];
    [testButton addTarget:self.view action:@selector(gotoProd:) forControlEvents:UIControlEventTouchUpInside];
    [testButton addt
    [scrollView testButton];

但现在我正在尝试用带有行的 tableview 替换所有这些按钮。我能够填充行并且我知道需要使用 didSelectRowAtIndexPath 来处理单元格的选择事件。但是如何在 tableviews 中实现 action:@selector(gotoProd:) ?任何帮助将不胜感激。

【问题讨论】:

【参考方案1】:

最直接的方式如下所示:

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

      switch (indexPath.row) 
        case 0:
            [self doRow0Action];
            break;
        case 1:
            [self doRow1Action];
            break;
        // etc...

        default:
            break;
    

如果您愿意,可以使用 SEL 类型初始化一个数组:

[actionArray addObject:@selector(doRowNAction)];

然后像这样访问它:

[self performSelector:[actionArray objectAtIndex:indexPath.row] withObject:nil];

【讨论】:

如果您将所有 Cell 数据包装在 NSDictionary 中,使用 NSString 定义选择器名称,此答案也会有所帮助。您可以使用 [self performSelector:NSSelectorFromString([cellData objectForKey:@"cell_selector"])];在 didSelectRow 中执行您的操作。【参考方案2】:

打电话

[self gotoProd:indexPath.row];

来自didSelectRowAtIndexPath

 - (void)gotoProd:(int)rowSelected 
      //Check row index here and do it accordingly
 

【讨论】:

以上是关于如何在 UITableview 的 didSelectRowAtIndexPath 中实现动作?的主要内容,如果未能解决你的问题,请参考以下文章

UITableView:可以通过点击手势检测单元格选择,但不能检测 didSelectRowAtIndexPath

不能使用 Swift 语法过滤器

ios - 如何播放 MPMediaItemCollection?

如何在警报中访问 Uitextfield 的文本?

子视图可见时如何禁用 selectRowAtIndexPath

我如何在“didselectitematindexpath”中调用单元格类结果页面