Ios 表格单元格内的按钮不可单击
我有一个自定义单元格,它有两个按钮连接到它的方法。我将单元格添加到表中,如下所示:Ios 表格单元格内的按钮不可单击,ios,objective-c,uitableview,xcode5,Ios,Objective C,Uitableview,Xcode5,我有一个自定义单元格,它有两个按钮连接到它的方法。我将单元格添加到表中,如下所示: BSOrderedItemCell *cell = (BSOrderedItemCell *)[tableView dequeueReusableCellWithIdentifier:@"OrderItemCell"]; if (cell == nil) { NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"OrderItemCell" owner:
BSOrderedItemCell *cell = (BSOrderedItemCell *)[tableView dequeueReusableCellWithIdentifier:@"OrderItemCell"];
if (cell == nil) {
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"OrderItemCell" owner:self options:nil];
cell = (BSOrderedItemCell *)[nib objectAtIndex:0];
}
然后我设置它的属性
单元格大小与表的高度FORROWATINDEXPATH相同:并且没有任何单元格标签或按钮超出该大小
问题是我可以选择单元格,但不能点击按钮。就好像我在敲打标签,什么都没发生。所以我的结局是这样的:
编辑:只是为了澄清一些事情。问题不在于按钮单击方法。这是因为我无法实际单击按钮,好像有什么东西挡住了它,或者它被某些控件禁用了。不要创建iOutlot,然后在您的cellForRowAtIndexpath中将方法添加到按钮中
[cell.button addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside];
并在此处执行选择器,如果您不需要,则行已选择委派,然后添加
cell.userInteractionEnabled=NO代码>//太不要创建IBOutlot,然后在您的cellForRowAtIndexpath中将方法添加到按钮
[cell.button addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside];
并在此处执行选择器,如果您不需要,则行已选择委派,然后添加
cell.userInteractionEnabled=NO代码>//太您需要做以下事情
在CellXIB中设置按钮的标签。orderitemcell在您的案例中
扣上按钮
UIButton*btn=(UIButton*)[带标记的单元格视图:];
btn.tag=indexPath.row
3.将方法添加到按钮
[btn addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside];
现在做一个方法
-(void)buttonClicked:(UIButton*)btn
{
NSLog(@"the button clicked is on cell number%d",btn.tag);
}
你需要做以下事情
在CellXIB中设置按钮的标签。orderitemcell在您的案例中
扣上按钮
UIButton*btn=(UIButton*)[带标记的单元格视图:];
btn.tag=indexPath.row
3.将方法添加到按钮
[btn addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside];
现在做一个方法
-(void)buttonClicked:(UIButton*)btn
{
NSLog(@"the button clicked is on cell number%d",btn.tag);
}
你可以试试这个
[cell.button addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside];
要避免选择单元格,请执行以下操作:
Cell's xib -> Selection -> Set as None
你可以试试这个
[cell.button addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside];
要避免选择单元格,请执行以下操作:
Cell's xib -> Selection -> Set as None
自定义BSOrderedItemCell类的代码在哪里?按钮操作在哪里?是否使用NSLog或断点检查控件是否正在执行这些方法?是的,我尝试记录这些方法,但从未调用它们。问题是它甚至不可点击(它不会像普通按钮一样在点击时改变颜色)。BSOrderedItemCell只有-(iAction)递减一个:(id)发送方{NSLog(@“递减%@”,name.text);}
,它连接到按钮,没有其他内容。以及加号按钮的增加方法单击按钮时,您会看到显示的日志消息。是否调用了iAction?自定义BSOrderedItemCell类的代码在哪里?按钮操作在哪里?是否使用NSLog或断点检查控件是否正在执行这些方法?是的,我尝试记录这些方法,但从未调用它们。问题是它甚至不可点击(它不会像普通按钮一样在点击时改变颜色)。BSOrderedItemCell只有-(iAction)递减一个:(id)发送方{NSLog(@“递减%@”,name.text);}
,它连接到按钮,没有其他内容。以及加号按钮的增加方法单击按钮时,您会看到显示的日志消息。是否调用了iAction?问题是我确实需要一行,第二个问题是单元格甚至没有单击。它不显示普通按钮所显示的动画,因此将其连接到方法在这里不是问题。+和-是您的按钮吗?是的,只是普通的UIButtons。我认为您应该尝试至少添加一次目标,因为您可以确定为什么选择器没有calling@Retro如果将“否”设置为“单元格”,则无法访问按钮,因为它也是单元格的子视图。问题是我需要一行,第二个问题是单元格甚至没有点击。它不显示普通按钮所显示的动画,因此将其连接到方法在这里不是问题。+和-是您的按钮吗?是的,只是普通的UIButtons。我认为您应该尝试至少添加一次目标,因为您可以确定为什么选择器没有calling@Retro如果将“否”设置为“单元格”,则无法访问按钮,因为它也是cell的子视图。我已经试过了。问题不在于方法。无法单击“物理”按钮。在模拟器上运行->从菜单转到“调试”选项卡,选择“颜色混合层”,查看按钮上方是否有视图,得到如下结果。所以我猜不是这样。哪一个是您的按钮“-”或“+”,两者都与iBaction绑定,iBaction只需执行NSLog即可。但问题是我甚至不能在点击时得到一个按钮动画,所以当我点击它们时它们甚至没有被点击。他们的行为有点像UILabel,我已经试过了。问题不在于方法。无法单击“物理”按钮。在模拟器上运行->从菜单转到“调试”选项卡,选择“颜色混合层”,查看按钮上方是否有视图,得到如下结果。所以我猜不是这样。哪一个是您的按钮“-”或“+”,两者都与iBaction绑定,iBaction只需执行NSLog即可。但问题是我甚至不能在点击时得到一个按钮动画,所以当我点击它们时它们甚至没有被点击。它们的行为有点像UILabel。这无法解决问题。按钮甚至没有选择,不管它是否有目标。这不会解决问题。按钮甚至没有选择,不管它是否有目标。