我遇到了问题UITableView's didSelectRowAtIndexPath.
我的表是设置的,所以当我选择行时,它会初始化一个新的视图控制器并将其推送.
我第一次点击表中的任何一行时,该方法不会被调用.一旦我选择了另一行,它就会开始正常工作.
我已经通过设置断点来验证这一点didSelectRowAtIndexPath.在向NSLog方法添加时,我看到当我选择最后推送新视图控制器的第二行时,我看到控制台中同时出现两个日志语句.
有什么建议?
我在UITableView内心问题UIScrollView.当我滚动外部时scrollView,第一次触摸时table不会收到willSelect/didSelect事件,但第二次触摸时不会收到事件.更奇怪的是,细胞本身会得到触摸和突出显示的状态,即使delegate没有.
我的视图层次结构
UIView
- UIScrollView (outerscroll)
- Some other views and buttons
- UITableView (tableView)
Run Code Online (Sandbox Code Playgroud)
在滚动视图中,我有一些额外的视图可以动态扩展/关闭.表格视图需要与视图中的其他一些元素一起"固定"在顶部,这就是我创建此布局的原因,这使我可以通过使用转换以类似于Apple推荐的方式轻松移动元素.滚动发生了.
当outerscroll像这样移动时,表视图将使用转换效果进行转换:
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
if (scrollView == self.outerScrollView) {
CGFloat tableOffset = scrollView.contentOffset.y - self.fixedHeaderFrame.origin.y;
if (tableOffset > 0) {
self.tableView.contentOffset = CGPointMake(0, tableOffset);
self.tableView.transform = CGAffineTransformMakeTranslation(0, tableOffset);
}
else {
self.tableView.contentOffset = CGPointMake(0, 0);
self.tableView.transform = CGAffineTransformIdentity;
}
// Other similar transformations are done here, but not involving …Run Code Online (Sandbox Code Playgroud)