[英]Get indexPath on UITableView's editing mode
我有一个带有CustomCell的UITableView。 每当UITableView处于编辑模式时,我在CustomCell中都有以下代码。
- (void)willTransitionToState:(UITableViewCellStateMask)state{
[super willTransitionToState:state];
if (state == UITableViewCellStateShowingEditControlMask)
{
self.delBtn = [UIButton buttonWithType:UIButtonTypeCustom];
[self.delBtn setFrame:CGRectMake(10, 15, 25, 25)];
[self.delBtn setImage:[UIImage imageNamed:@"noSelection.png"] forState:UIControlStateNormal];
buttonCurrentStatus = YES;
[self.delBtn addTarget:self action:@selector(delBtnPressed:) forControlEvents:UIControlEventTouchUpInside];
[self addSubview:self.delBtn];
}
else
{
if(self.delBtn)
{
[self.delBtn removeFromSuperview];
self.delBtn = nil;
}
} }
- (void)delBtnPressed:(id)sender {
if (buttonCurrentStatus == NO)
{
buttonCurrentStatus = YES;
[self.delBtn setImage:[UIImage imageNamed:@"noSelection.png"] forState:UIControlStateNormal];
}
else
{
buttonCurrentStatus = NO;
[self.delBtn setImage:[UIImage imageNamed:@"selection.png"] forState:UIControlStateNormal];
} }
现在如何从UITableview的CustomCell获取indexPath?
您可以使用UITableView indexPathForCell:
显然,为此,您需要引用单元格类内部的表。 如果要使其成为单元格的属性,请确保使其变weak
以避免引用循环。
我发现执行此操作的最佳方法是在单元格上创建Delegate / Protocol。 使该委托成为ViewController并将其传递。然后您可以在该时刻在表视图上调用indexPathForCell。 下面的例子。
- (void)willTransitionToState:(UITableViewCellStateMask)state{
[super willTransitionToState:state];
if (state == UITableViewCellStateShowingEditControlMask)
{
self.delBtn = [UIButton buttonWithType:UIButtonTypeCustom];
[self.delBtn setFrame:CGRectMake(10, 15, 25, 25)];
[self.delBtn setImage:[UIImage imageNamed:@"noSelection.png"] forState:UIControlStateNormal];
buttonCurrentStatus = YES;
[self.delBtn addTarget:self action:@selector(delBtnPressed:) forControlEvents:UIControlEventTouchUpInside];
[self addSubview:self.delBtn];
}
else
{
if(self.delBtn)
{
[self.delBtn removeFromSuperview];
self.delBtn = nil;
}
} }
- (void)delBtnPressed:(id)sender {
if (buttonCurrentStatus == NO)
{
buttonCurrentStatus = YES;
[self.delBtn setImage:[UIImage imageNamed:@"noSelection.png"] forState:UIControlStateNormal];
}
else
{
buttonCurrentStatus = NO;
[self.delBtn setImage:[UIImage imageNamed:@"selection.png"] forState:UIControlStateNormal];
}
if ([self.delegate respondsToSelector:(customCelldelBtnPressed:)]) {
[self.delegate customCelldelBtnPressed:self];
}
}
//当然,您将需要实际创建委托或协议,并在视图控制器上实现它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.