【问题标题】:adding buttons in a tableView cell在 tableView 单元格中添加按钮
【发布时间】:2013-05-10 09:33:25
【问题描述】:

所以我想要我的 tableView 单元格中的三个按钮。我已经制作了一个自定义单元格,因此我自定义了自定义单元格中的按钮一次,而不是在cellForRowAtIndexPath 中一次又一次地进行操作

但我想为我正在使用的所有三个按钮添加一个选择器

[cell.btn1 addTarget:self action:@selector(firstAction:) forControlEvents:UIControlEventTouchUpInside];

cellForRowAtIndexPath 内。这是最好的方法吗?每次滚动我的单元格时,addTarget 不会被初始化和重新初始化吗?那不会是额外的超载吗?有没有我不知道的更好的方法?

编辑

这就是我如何确定按下的按钮属于哪个单元格

CGPoint buttonPosition = [sender convertPoint:CGPointZero toView:self.feedTableView];
NSIndexPath *indexPath = [self.feedTableView indexPathForRowAtPoint:buttonPosition];

【问题讨论】:

    标签: uitableview io uibutton


    【解决方案1】:

    您可能应该在自定义单元格中创建一个委托,并在单击任何按钮时触发该委托。一些代码示例:

    @protocol CustomCellDelegate
    -(void)cell:(UITableViewCell *)cell buttonTapped:(UIButton) atIndexPath:(NSIndexPath *)indexPath;
    @end
    
    @interface CustomCell
    property (weak) id<CustomCellDelegate> delegate;
    @end
    
    @implementation CustomCell
    -(void)buttonTapped {
      // fire delegate here
    }
    @end
    

    我还强烈建议您查看免费的 Sensible TableView 框架,因为它可以更轻松地处理带有按钮的此类自定义单元格。在过去的几个月里,我自己节省了大量时间。

    【讨论】:

      【解决方案2】:

      您可以通过情节提要或 XIB 文件设置按钮的目标和操作。更有趣的问题是您要弄清楚您的按钮是从哪个表格单元格中按下的。

      我建议子类化 UIButton 并向子类化 UIButton 添加一个“row”或“indexPath”属性,您可以在表格中设置该属性以提供“cellForRowAtIndexPath”方法,并从中设置(“sender” ) 您可以在按下按钮并调用您的操作后提取该按钮被单击的行。

      【讨论】:

      • Michael Dautermann,请看我的编辑。当我使用情节提要为他们分配动作时,当前的逻辑会起作用。
      • 你现在的逻辑怎么行不通? indexPath 是假的还是?
      • 如果我在 cellForRowAtIndexPath 中执行选择器,它会起作用,但是当我使用情节提要将操作直接连接到按钮,然后按下按钮时,什么也没有发生。
      • 如果您在动作上设置断点,当您触摸通过情节提要设置的按钮时它们会触发吗?如果没有,您可能没有正确连接操作。
      • 我猜那是因为要制作自定义单元格,我是 initWithFrame 自定义单元格文件中的按钮
      猜你喜欢
      • 2020-10-20
      • 2015-09-17
      • 1970-01-01
      • 2017-12-12
      • 1970-01-01
      • 2016-03-16
      • 1970-01-01
      • 1970-01-01
      • 2015-02-21
      相关资源
      最近更新 更多