处理按部分加载的自定义单元格中的 UIButton 单击(未定义部分数。即:动态获取)

Posted

技术标签:

【中文标题】处理按部分加载的自定义单元格中的 UIButton 单击(未定义部分数。即:动态获取)【英文标题】:Handle UIButton click in a custom cell that is loaded in sections (where number of section is not defined. ie: taken dynamically) 【发布时间】:2014-03-24 11:53:11 【问题描述】:

我有一个视图控制器,我想在其中加载部分,并且部分数量的计数是动态获取的,即:从数据库中检索。现在,在每个部分中都有 8 行,其中第 2 到第 8 行分别加载了 5 个按钮。 我希望每当按下单元格上的按钮时,都会在该单元格的最右侧操纵和显示特定值。所有部分都应该发生同样的事情。 . 我的问题是,当我单击一个部分的单元格上的特定按钮时;其他部分的单元格上的其他按钮也被选中。 . 请帮忙..

【问题讨论】:

【参考方案1】:

您可以像单元格索引一样获得部分索引,也可以使用以下代码在按钮点击方法中获得:-

-(IBAction)ActionBttonTap:(UIButton*)sender


    CGPoint touchPoint = [sender convertPoint:CGPointZero toView:yourtableview];
    NSIndexPath *indexPath = [tblHistoryYear indexPathForRowAtPoint:touchPoint];
    NSString *strSection=[NSString stringWithFormat:@"%d",indexPath.section];
    NSString *strRow=[NSString stringWithFormat:@"%d",indexPath.row];

    NSLog(@"tag is %d   indexPath is  %d  section is %d",sender.tag,indexPath.section,indexPath.row);


不要忘记在cellForRowAtIndexPath 设置按钮标签,例如self.yourbutton.tag=indexPath.row;

【讨论】:

【参考方案2】:

在您的单元格中实现prepareToReuse 方法,调用相同的super 实现方法,然后在按钮上调用– removeTarget:action:forControlEvents: 方法。

由于单元格将被重复使用,您必须在添加新目标之前删除之前为按钮设置的目标。

下面是示例代码

- (void)prepareForReuse

    [super prepareForReuse];
    [yourbuttonInstance removeTarget:self action:NULL forControlEvents:UIControlEventTouchUpInside];

为操作传递 NULL 会删除与目标配对的所有操作消息,并根据您的要求更新控制事件。

【讨论】:

这可能是正确的。您能否添加一些参考代码或至少任何有帮助的链接。

以上是关于处理按部分加载的自定义单元格中的 UIButton 单击(未定义部分数。即:动态获取)的主要内容,如果未能解决你的问题,请参考以下文章

当触摸单元格中的自定义按钮时,我们如何知道表格中触摸了哪个单元格?

如何从 UITableViewCell 中的自定义 UIButton 中删除触摸延迟

更改单元格中的数据后,UITableView 中的自定义单元格将无法正确重新加载

在自定义单元格中点击 UIButton 不会调用 didSelectRowAtIndexPath

从多节 UITableView 中的自定义静态单元格中检索标签文本

如何在 Tableview 单元格中获取 UIButton 的位置,并在 Swift 中添加目标?