我不记得我第一次看到这个bug了。如果它是从iOS 9框架开始的话。
问题是,当我在故事板中将UITableView作为我的UIViewController的第一个子节点时,tableView显然具有更大的内容大小,并且不显示滚动指示符。当我把透明的UIView作为第一个孩子时,问题就消失了。
UITableViewControllers也出现同样的问题。并且没有技巧,因为de TableView是ViewController的主要视图。
任何人都有这个错误或知道如何解决它?
我正在尝试解决此问题,以便仅仅因为故事板处于" MacGyver模式"来防止将来出现问题。
答案 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
被覆盖,底部布局指南受到影响。现在,我只是隐藏原生标签栏并将我需要的视图放在它上面。在这种情况下,原生标签栏仍然存在,但隐藏在那里,所以布局指南。