时间:2010-11-03 20:09:21

标签: iphone uitableview scroll

Stackoverflow似乎是互联网上最权威,最易用的技术论坛之一,所以我认为这将是最好的起点。我已经对这个特定的问题做了大量的研究,到目前为止我还没有找到明确的答案,并希望这里的某个人能够找到解决方案或至少解答为什么这个问题不起作用。这适用于带有xcode 3.2.4的iPhone SDK 4.1。

我有一个分组的表格视图,其中包含2个部分,每个部分有3行。通过设计,整个表格视图在不被遮挡时是可见的。当用户触摸任何单元格时,将显示选择器视图,并且在选择器上进行选择时,它们将反映在所选表格视图单元格中。这个选择器视图模糊了底部三个单元格,所以我希望底部单元格向上滑动并可见但是在使用以下代码时没有任何反应:

NSIndexPath* ip = [NSIndexPath indexPathForRow:0 inSection:1];

[tableView scrollToRowAtIndexPath:ip
    atScrollPosition:UITableViewScrollPositionTop animated:NO];

没有编译器错误或警告,我已经验证它正在执行并且在表视图上启用了滚动。正如所预期的那样,当视频不被遮挡时,桌面视图不会滚动而是反弹,因为所有细胞都已经可见。我想到了几个解决方法,这些解决方法都不是很吸引人。一个是创建两个单独的表视图,但这将涉及相当多的工作,因为我已经进行了进一步的开发,因为能够让底部部分滚动。另一种可能的解决方案是将框架设置为在从底部选择时在顶部显示拾取器,反之亦然从顶部选择。出于美学原因,我不太喜欢这种解决方案。我希望有人有解决方案或至少解释为什么这不能按预期工作。

非常感谢, 汤姆

当表格被选择器视图隐藏时

2 个答案:

答案 0 :(得分:0)

是的,tableview不会滚动到它包含的单元格之外。只需在显示选择器视图时调整tableview的大小,以便它们不会重叠。

答案 1 :(得分:0)

尝试获取tableView的框架,然后移动它。

在UITableViewController中:

//change the height value to accomodate the pickerView
CGRect newFrame = CGRectMake(0.0f, 0.0f,320.0f,240.0f); //guessing on height of 240
self.tableView.frame = newFrame;

当你完成后,就把它放回去

CGRect oldFrame = CGRectMake(0.0f,0.0f,320.0f,480.0f);
self.tableView.frame = oldFrame;

你可以随时将它放在一个漂亮的动画块中,以便向上或向下滑动。

祝你好运