【发布时间】:2013-05-05 04:53:40
【问题描述】:
我知道论坛上有很多关于这个问题的答案,但他们没有帮助我。这是我的问题。
我有UITableView 和UISegmentedControl。一个段中的数据比另一个段中的少。旋转或分段切换后,我调用reloadData 以确保显示整个数据。这样可行。
现在,用户单击一个单元格并使用相同的UISegmentedControl 转到另一个视图。打算使用相同的控件,我希望两个视图都显示相同的数据透视图。当用户在第一个屏幕上看到数据较少的透视图时,就会出现问题,然后转到第二个屏幕并将透视图更改为那里的数据。然后他返回并且无法滚动到表格底部。如果他旋转屏幕或更改片段,一切都会再次正常。
我尝试通过实现viewWillAppear: 并在那里减少/计算tableView 的高度来解决问题。不幸的是,它没有奏效。调用 reloadData 也无济于事。实际上,tableView 在切换段时已经重新加载...但是,我仍然无法看到表格的最后一个单元格。
有什么想法吗?
编辑:
这是我从测试中得到的高度(没有调整大小):
NSLog(@"Before switch: %f, %f", self.tableView.frame.size.height, self.tableView.contentSize.height); --> 切换前:372.000000, 471.000000
NSLog(@"After switch: %f, %f", self.tableView.frame.size.height, self.tableView.contentSize.height); --> 切换后:372.000000, 585.000000
tableView 保持不变,只是 contentSize 增加。我尝试将一个的值设置为另一个的值,减少值等,但我真的不知道应该做什么......
EDIT2:
所有contentSize 和height 值似乎都很好。但是,我意识到问题与屏幕上的自定义标题视图有关。当我从表格视图中删除它时,它会滚动到最后。但是,对于标题视图,它不会。我没有从标题视图中更改任何内容,它只是一个在表格顶部带有按钮的视图。
【问题讨论】:
-
两个视图的图像会有所帮助。
-
当你改变 tableView 的大小时显示你的代码
-
tableview的高度你设置了吗?
-
对于我最后尝试的高度
CGRect tableViewFrame = [self.tableView frame]; tableViewFrame.size.height /= 2; [self.tableView setFrame: tableViewFrame];之前,我也是通过bounds和计算高度 -
关于图像.. 视图中没有什么特别之处,只有带有单元格的表格和包含分段控件的工具栏。在第一个视图中,表格中还有另一个视图,就在单元格之前。但我认为这并不重要,它的大小不会改变。
标签: ios objective-c uitableview uiscrollview uisegmentedcontrol