0

我有一个我正在开发的应用程序,它使用主详细信息模板的修改版本。该应用程序是基于文档的,因此它使用列出所有文档的表格视图进行统计。一旦选择了一个文档,就会在具有三个选项卡的选项卡栏中幻灯片,其中前两个是表格视图。两个表视图都有自己的表视图控制器类,它们共享一个通用的自定义超类。继承是UITableViewController-> TMSTableViewController->TMSExpensesTableViewController/TMSCategoriesTableViewController. 无论哪个选项卡首先显示,它应该与从导航栏下方开始的表格一样显示。但是,要加载的第二个选项卡始终从导航栏下方的屏幕顶部开始,因此第一行半被隐藏。如果它只是其中一个表视图,我会假设控制器或视图有问题,但我实际上复制了第一个选项卡的场景,即使它们都有相同的控制器运行它们,第二个仍然从顶部开始的屏幕。

我是否在 iOS7 中发现了一个错误,或者在标签栏中使用多个表格视图时我需要做一些奇怪的技巧吗?

每个表都显示一个单一的核心数据实体类型,并TMSTableViewController具有处理获取结果控制器的所有通用代码以及大多数表视图代码。这两个子类中的唯一方法是根据显示的实体类型适当地配置单元格,将获取的结果控制器设置为必须具有适当的实体,并在需要时添加适当类型的实体。

4

1 回答 1

0

这似乎是 iOS 7 中的一个错误的结果。解决方法是在除第一个表视图之外的所有代码中使用以下代码:

CGRect barFrame = self.navigationController.navigationBar.frame;
    CGRect tabFrame = self.tabBarController.tabBar.frame;
    self.tableView.contentInset = UIEdgeInsetsMake((barFrame.origin.y + barFrame.size.height), 0, tabFrame.size.height, 0);

我使用包裹在一个中的这段代码,#ifdef这样当它得到修复时,我可以轻松地删除相关联#define的代码并让所有代码消失。

于 2014-01-21T22:22:48.683 回答