我有一个载有视图的HomeViewController。在顶部是地图视图,所以现在当我创建它的顶部的表视图,它不覆盖整个屏幕,但它的一小部分(实际上是tableview形式的下拉列表),它显示正常cellForRowAtIndexPath
工作正常,但didSelectRowAtIndexPath
根本没有工作..我已经尝试使用断点,但它没有调用此方法实际感染它是在后面选择视图,即地图视图。单击表视图实际上是更改后面的地图视图..
我的表视图来自另一个由HomeViewController
我正在使用一些NIDropDown类..如果没有视图(仅限superview),它的工作正常,但如果后面有任何视图则不能工作
答案 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)表格视图在超级视图中超出界限
<强>原因:强>
在这种情况下,表格视图显示正常,但实际上它的界限超出了自己的超级视图范围。