BUG - TableView具有奇怪的大小而不显示滚动指示器

时间:2015-10-02 21:52:34

标签: ios objective-c iphone uitableview scroll

我不记得我第一次看到这个bug了。如果它是从iOS 9框架开始的话。

问题是,当我在故事板中将UITableView作为我的UIViewController的第一个子节点时,tableView显然具有更大的内容大小,并且不显示滚动指示符。当我把透明的UIView作为第一个孩子时,问题就消失了。

UITableViewControllers也出现同样的问题。并且没有技巧,因为de TableView是ViewController的主要视图。

任何人都有这个错误或知道如何解决它?

我正在尝试解决此问题,以便仅仅因为故事板处于" MacGyver模式"来防止将来出现问题。

2 个答案:

答案 0 :(得分:1)

看起来表格视图的框架大于屏幕尺寸。这就是为什么没有滚动指示符出现的原因。当您将透明视图添加为表视图的超级视图时,您将以某种方式影响该表视图的大小调整。尝试检查表视图的框架,然后使用其布局约束。

更新: 我已经拿了PO的代码,发现(在iPhone 6模拟器上)表视图有frame =(0 0; 375 667)和contentSize:{600,0}。这就是为什么没有滚动指示符出现的答案。内容大小“错误”,因为未指定数据源。 然后,当我在第0部分指定数据源并返回28作为行计数时,我得到了一个异常。该异常说:“未能从其dataSource获取一个单元格”。那是因为UITableViewCell *cell = [super tableView:tableView cellForRowAtIndexPath:indexPath];返回nil(这是预期的BTW)。实例化表视图单元格的正确方法是:

 - (__kindofUITableViewCell * _Nullable)dequeueReusableCellWithIdentifier:(NSString * _Nonnull)identifier

......但这是一个完全不同的故事。希望这会有所帮助。

答案 1 :(得分:0)

问题出现了,因为在项目的某个阶段,UITabBar UITabBarController被覆盖,底部布局指南受到影响。现在,我只是隐藏原生标签栏并将我需要的视图放在它上面。在这种情况下,原生标签栏仍然存在,但隐藏在那里,所以布局指南。