我有一个UITableView,其中填充了许多自定义UITableViewCells。他们每个都有一个彩色矩形作为子视图(目前它是一个程式化的UIButton但我无论如何都可以实现它。)
我希望UITableViewCell仅在选择该部分时才调用tableview:didSelectRowAtIndexPath:
。
其他类似的问题询问如何让子视图忽略事件。但这对我不起作用,因为选择那个矩形之外的任何地方也会触发它。
我不确定是否限制触发方法的单元格区域或禁用单元格的触发,而是允许子视图触发该方法。无论哪种方式,我都不知道实施的细节。
答案 0 :(得分:2)
在didSelect中获取您的单元格(传递给您),并检查该单元格中的按钮是否被选中。如果它然后做你需要的,否则忽略它。
答案 1 :(得分:1)
我不知道你为什么要调用didSelectRowAtIndexPath:但是如果你想从按钮接收触摸事件,你可以将按钮按下的事件(内部触摸)连接到表视图控制器,如果你有子类或连接如果您委派了它,它会到表视图控制器的委托。如果您需要实际选择行,则可以调用selectRowAtIndexPath:animated:scrollPosition:
并在按下按钮时以编程方式选择行。
答案 2 :(得分:0)
您是否考虑过不调用didSelectRowAtIndexPath
,而是创建UIButton
触发时触发的操作?当触摸UIButton
时,我不确定你想要做什么,但是假设你只想在方法中推出一个新的视图控制器。
如果您使用的是nib
或storyboard
且UITableView
个实例属于UITableViewController
,则可以将UIButton
与您的-(IBAction)buttonTapped:(id)sender {
NewViewController *newViewController = [[NewViewController alloc] init];
[newViewController setSomeProperty:property];
[[self navigationController] pushViewController:newViewController animated:YES];
}
相关联这个,
nib
如果您没有使用storyboard
或UIButton
,则可以在init
方法或其他地方以编程方式将操作连接到{{1}}。
答案 3 :(得分:-1)
创建UITableViewCell
的自定义子类,并在其中添加您自己的按钮。无论你想要什么领域。