仅为UITableViewCell的一部分调用didSelectRowAtIndexPath

时间:2013-10-12 15:29:06

标签: ios objective-c uitableview didselectrowatindexpath

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

我希望UITableViewCell仅在选择该部分时才调用tableview:didSelectRowAtIndexPath:

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

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

4 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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

如果您使用的是nibstoryboardUITableView个实例属于UITableViewController,则可以将UIButton与您的-(IBAction)buttonTapped:(id)sender { NewViewController *newViewController = [[NewViewController alloc] init]; [newViewController setSomeProperty:property]; [[self navigationController] pushViewController:newViewController animated:YES]; } 相关联这个,

nib

如果您没有使用storyboardUIButton,则可以在init方法或其他地方以编程方式将操作连接到{{1}}。

答案 3 :(得分:-1)

创建UITableViewCell的自定义子类,并在其中添加您自己的按钮。无论你想要什么领域。