处理按部分加载的自定义单元格中的 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