2

我有一个 UITableView 填充了许多自定义 UITableViewCells。它们中的每一个都有一个彩色矩形作为子视图(目前它是一个风格化的 UIButton,但无论如何我都可以实现它)。

我希望 UITableViewCelltableview:didSelectRowAtIndexPath:仅在选择该部分时调用。

其他类似的问题询问如何让子视图忽略事件。但这对我不起作用,因为选择该矩形之外的任何地方也会触发它。

我不确定是限制触发方法的单元格区域还是禁用从单元格触发,而是允许子视图触发方法。无论哪种方式,我都不知道实施的细节。

4

4 回答 4

2

在 didSelect 中获取您的单元格(传递给您),并检查该单元格中的按钮是否被选中。如果是那么做你需要的,否则忽略它。

于 2013-10-12T15:37:53.300 回答
1

我不知道你为什么要调用 didSelectRowAtIndexPath: 但如果你想从按钮接收触摸事件,你可以将按钮按下事件(内部触摸)连接到表视图控制器,如果你已经将它子类化或将它连接到表视图控制器的委托(如果您已委托)。如果您需要实际选择行,则可以selectRowAtIndexPath:animated:scrollPosition:在按下按钮时以编程方式调用并选择行。

于 2013-10-12T15:43:44.663 回答
0

您是否考虑过不调用didSelectRowAtIndexPath而是创建一个动作以在UIButton触摸时触发?我不确定当UIButton被触摸时你想要做什么,但可以说你只是想在方法中推送一个新的视图控制器。

如果您使用的是niborstoryboard并且您的UITableView实例属于 aUITableViewController您可以将您UIButton的操作连接到如下所示的操作,

-(IBAction)buttonTapped:(id)sender {

     NewViewController *newViewController = [[NewViewController alloc] init];
     [newViewController setSomeProperty:property];
     [[self navigationController] pushViewController:newViewController animated:YES];
}

如果您不使用niborstoryboard那么您可以在您的方法或其他地方以UIButton编程方式将操作连接到该操作。init

于 2013-10-12T16:01:13.370 回答
-1

制作 a 的自定义子类UITableViewCell并在其中添加您自己的按钮。在任何你想要的区域。

于 2013-10-12T15:45:26.890 回答