Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/107.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 表格单元格内的按钮不可单击_Ios_Objective C_Uitableview_Xcode5 - Fatal编程技术网

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。这无法解决问题。按钮甚至没有选择,不管它是否有目标。这不会解决问题。按钮甚至没有选择,不管它是否有目标。