在哪里添加事件处理程序

时间:2013-08-03 19:37:14

标签: ios uitableview

似乎有多个地方可以为目标添加事件处理程序。目前,我在UITableViewCell中有一个滑块,其中有多个方法用于控制事件:UIControlEventValueChangedUIControlEventTouchUpInsideUIControlEventTouchUpOutside

目前已在layoutSubviews方法中添加了这些内容,但我不确定这是否是正确的地方。我尝试将它们移动到UITableViewController(就像我在tableView: cellForRowAtIndexPath:方法中添加它们一样),但现在我不确定添加这些东西的正确位置。

我应该将它们保留在layoutSubviews(随着时间的推移重复调用,因为滚动,不确定它对事件处理程序的作用,是否会多次添加?),将其移动到{ {1}}(也不确定这个,我在这个方法中尝试了一个NSLog,但是它甚至没有调用过一次),或者把它放在UITableViewController中?

2 个答案:

答案 0 :(得分:1)

创建滑块时应添加它们。如果滑块是在XIB中创建的,那么你真的应该在那里添加连接,否则你可以在viewDidLoad中添加它,或者根据你的构造awakeFromNib添加它。如果滑块是在代码中创建的,则在创建后立即添加它们。

答案 1 :(得分:1)

layoutSubviews方法肯定正确的位置:它用于控制布局,而不是挂钩事件处理程序 - 更不用说连接相同处理程序的可能性多次!

向标准单元格添加事件的正确位置是tableView: cellForRowAtIndexPath:方法。对于使用Interface Builder绘制的自定义单元格,您应该能够直观地连接事件。