我已经实现了这个按钮抽屉,我已经添加了一些按钮。也就是说,我不确定如何将抽屉中这些按钮的消息发送到相应的委托方法,以便从我的tableView中删除该项目。
如何获得正确的indexPath?我应该为那些已经切换了检查按钮的uitableviewcells创建一个新的NSIndex吗?
由于
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
HHPanningTableViewCell *cell = (HHPanningTableViewCell*)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
NSInteger directionMask = indexPath.row % 5;
if (cell == nil) {
cell = [[HHPanningTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
UIView *drawerView = [[UIView alloc] initWithFrame:cell.frame];
drawerView.backgroundColor = [UIColor grayColor];
cell.drawerView = drawerView;
UIImage *checkImage = [UIImage imageNamed:@"check.png"];
UIButton *checkButton = [UIButton buttonWithType:UIButtonTypeCustom];
[checkButton setImage:checkImage forState:UIControlStateNormal];
cell.frame = CGRectMake(0, 0, cell.frame.size.width, cell.frame.size.height);
checkButton.frame = CGRectMake(10, 10, checkImage.size.width, checkImage.size.height);
[drawerView addSubview:checkButton];
[checkButton addTarget:nil action:@selector(onCheckMarkTap:) forControlEvents:UIControlEventTouchUpInside];
}
- (void)onCheckMarkTap {
NSLog(@"Delete the cell");
}
-(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
if (editingStyle == UITableViewCellEditingStyleDelete) {
}
}
答案 0 :(得分:1)
这个问题已经has an answer。您可以使用带有事件的目标/动作或通过手势识别器获取在表视图的坐标系中点击的按钮的坐标,然后使用UITableView的方法-indexPathForRowAtPoint:来获取包含该按钮的单元格的indexPath点。
答案 1 :(得分:0)
cellForRowAtIndexPath:
checkButton.tag = indexPath.row
同样在onCheckMarkTap中,执行以下操作:
- (void)onCheckMarkTap : (id) sender
{
if (sender.tag == 0)
///code
else if (sender.tag == 1)
///code
}
答案 2 :(得分:-2)
我在自己的代码中处理这样的问题的方法是子类化“UIButton
”,我将“NSIndexPath
”或“tableRow
”ivar添加到子类按钮中。我们的名字是“StangButton
”。
使用子类按钮,您可以在通过“indexPath
”撰写单元格时填充“cellForRowAtIndexPath:
”ivar。
然后,当按下按钮时,您将知道按下了哪个按钮以及它在哪一行。
您还可以检查在单元格中触摸按钮时是否调用"tableView:didSelectRowAtIndexPath:"
表视图委托方法。