Iphone 添加单元格后,iOS UITableView未滚动

Iphone 添加单元格后,iOS UITableView未滚动,iphone,ios,ipad,uitableview,Iphone,Ios,Ipad,Uitableview,我有一个UITableView,它表示游戏中的可玩回合。第一次启动时,tableView中仅显示两个单元格。随着用户点击级别,越来越多的行被添加到tableView中。每次显示tableView时,我都会重新加载数据(每次用户超过某个级别时都会发生这种情况) 一旦tableView包含足够的单元格需要滚动,tableView将不会滚动以及用户将其放在何处。它将滚动显示单元格在下方,但当用户松开手指时,tableView会反弹,不允许用户与需要滚动查看的单元格交互。完成另一个级别并返回tableV

我有一个UITableView,它表示游戏中的可玩回合。第一次启动时,tableView中仅显示两个单元格。随着用户点击级别,越来越多的行被添加到tableView中。每次显示tableView时,我都会重新加载数据(每次用户超过某个级别时都会发生这种情况)

一旦tableView包含足够的单元格需要滚动,tableView将不会滚动以及用户将其放在何处。它将滚动显示单元格在下方,但当用户松开手指时,tableView会反弹,不允许用户与需要滚动查看的单元格交互。完成另一个级别并返回tableView后,视图将正确滚动

当存在滚动问题时,就好像tableView没有意识到它足够大而需要滚动一样,因此它会反弹回其原始位置,尽管当用户尝试滚动时,下面会显示一些单元格

我没有在tableView的委托中实现heightForRowAtIndexPath或heightForHeaderInSection方法,因此这不应该造成干扰。我在这个网站和谷歌上搜索过类似的问题,并尝试过一些方法,包括设置contentSize,但都没有成功

没有滚动有什么原因吗?或者,更重要的是,有没有办法解决这个问题?谢谢

编辑: 我看到一些关于框架的评论。我记录了表所在视图的框架、tableView本身的框架以及表I所在视图的ViewDidDisplay方法中tableView的内容大小

以下是视图在需要滚动之前显示的结果。滚动行为符合预期;用户可以滚动通过可见区域,然后它会反弹回来

view.frame: {{0, 20}, {320, 460}}
tableView.frame: {{0, 145}, {320, 315}}
tableView.contentSize: {320, 308}
以下是在需要滚动时显示视图的结果。滚动将允许下面的单元格出现,但当用户松开手指时,它会在不应该的时候反弹回来

view.frame: {{0, 20}, {320, 460}}
tableView.frame: {{0, 145}, {320, 315}}
tableView.contentSize: {320, 352}

请注意,contentSize.height确实更改了44,这是添加新单元格后应该更改的。contentSize.height现在大于tableView.frame.height,但滚动行为并不反映这一点。

协议UITableViewDelegate符合UIScrollViewDelegate,因此,您需要做的就是直接在UITableViewDelegate实现中实现-ScrollViewWillBeginDraging和-scrollViewDidScroll方法,如果实现类设置为UITableView的委托,则会自动调用这些方法

 self.tableview.scrollEnable=YES;//Paste this line where initialized UITableView.
所以在这些方法中,您可以实现与显示tableView内容相关的逻辑。就像你在滚动时说的,它应该显示新的单元格,也就是说,最上面的单元格必须在那个时候隐藏。您可以在上面的方法中编写逻辑,如下所示:

//set your content of tableview to show new cell each time.
或者对于滚动方向,您可以使用方法-(void)ScrollViewDiEndDecelling:(UIScrollView*)scrollView

// you can set here start and end coordinates and change them accordingly when scroll decelerates.
以这种方式编写代码不会使滚动条反弹。你会得到完美的结果。
希望这有帮助。

请发布一些代码。您是否正在某处编辑tableview的框架?或者使用tableView的contentInset?我使用的是自动布局,而不是设置框架。我没有设置tableView的contentInset。我不认为代码中有任何特殊情况会导致这种情况,或者我可以发布的任何代码都是有用的。我正在实现普通的委托方法。我正在IB中布置tableView。我无法想象任何IB约束会导致这样的滚动问题。请发布代码-否则,任何人都几乎不可能为您的问题提供有意义的答案。在重新加载数据的位置设置断点,并在Xcode lldb/gdb控制台中执行
po
。这将告诉您tableview的框架是什么,这将帮助我们解决您的问题。我认为您的tableview框架y-size大于您的view框架y-size。这显然是错误的,因为OP得到了一些滚动,只是不够。那么问题一定是UITableView框架,,这将比视图更大。这就是某些单元格不可见的原因…因此请正确设置UITableView的框架。@h.kishan感谢您的回答。我试过了,但没用。我还将UITableView的框架记录在对问题的编辑中。//执行此tableView.frame:{{0,145},{320,215}}//这肯定会对您有所帮助我不确定为什么会有帮助。我使用的是自动布局,所以设置tableView的框架不起作用。