UITableViewController中的didSelectRowAtIndexPath不起作用

时间:2015-03-16 10:49:26

标签: ios objective-c iphone uitableview didselectrowatindexpath

我有一个载有视图的HomeViewController。在顶部是地图视图,所以现在当我创建它的顶部的表视图,它不覆盖整个屏幕,但它的一小部分(实际上是tableview形式的下拉列表),它显示正常cellForRowAtIndexPath工作正常,但didSelectRowAtIndexPath根本没有工作..我已经尝试使用断点,但它没有调用此方法实际感染它是在后面选择视图,即地图视图。单击表视图实际上是更改后面的地图视图..

我的表视图来自另一个由HomeViewController

继承的类

我正在使用一些NIDropDown类..如果没有视图(仅限superview),它的工作正常,但如果后面有任何视图则不能工作

3 个答案:

答案 0 :(得分:2)

很少有事情需要确保 - 1)正如您所说,您的表视图位于地图视图的顶部。如果是这样的话就好了。

2)检查是否为表视图启用了用户交互。

3)检查您是否设置了表视图的委托(负责检测表视图上的事件)。

4)检查你是否没有将代理设置为nil,并且表视图仍然可见。

我认为如果您按照上述步骤操作,则应触发表视图的事件,否则,如果您发布代码以获得有关该问题的其他线索,那将会很好。

答案 1 :(得分:1)

cellForRowAtIndexPath工作表明datasource属性(UITableViewDataSource)已正确设置。

如果didSelectRowAtIndexPath未触发,则应检查是否在Interface Builder或代码中正确设置了delegate属性(UITableViewDelegate)。

答案 2 :(得分:1)

在阅读完您的问题后,我坚信会有两个问题:

1)地图视图问题,如果您将表格视图显示为*标注视图

<强>原因:

你应该使用“MKAnnotationView”标注视图来显示地图上的下拉列表。

如果您这样做,请确保MKAnnotationView视图高度与下拉视图(NIDropdown视图)的高度完全相同。

表格视图无法触及,这就是为什么它不会向didSelectRowAtIndexPath发送deletegte的消息{{1}}。

在您的情况下,可能是地图视图获取触摸,这不会在表视图位于屏幕之前获取。

2)表格视图在超级视图中超出界限

<强>原因:

在这种情况下,表格视图显示正常,但实际上它的界限超出了自己的超级视图范围。