UITableview从不同的UINavigationControllers('More')显示时改变高度

时间:2010-12-11 21:31:27

标签: iphone ios uitabbarcontroller uitableview

我遇到UITableViewController的tableView在UINavigationController中从UITabBarController呈现时更改其帧位置的问题。从常规选项卡显示时,框架正常。但是,如果我从'More'部分移动并显示UITableViewController,则tableview向下移动与导航栏相同的高度(我不希望它)。当我在正确位置和非正确位置之间测试运行时帧坐标时,它显示为相同(0.0,0.0,320.0,411.0)。 这个问题只发生在我在一个导航控制器中显示tableView然后它被移动并在另一个导航中显示,如“更多”VC到选项卡,或选项卡到“更多”VC

这里发生了什么,我该如何解决这个问题?

最后一张图片是应用程序启动时的样子,应该是导航栏右下方的桌面视图。但是,在前两个中,您可以看到tableview已经向下移动。

提前致谢!

alt text alt text

alt text

5 个答案:

答案 0 :(得分:3)

我能够解决这个问题。事实证明,当您将UINavigationController中的UITableView控制器移动到moreNavigationController时,会将44个像素添加到contentInset和scrollIndicatorInsets的“顶部”变量中。我不确定为什么会发生这种情况或为什么当tableView离开'moreNavigationController'时这些44像素没有被删除,但这是答案。我在viewWillAppear中调用这两行。

self.tableView.contentInset = UIEdgeInsetsMake(44.0, 0.0, 0.0, 0.0);
self.tableView.scrollIndicatorInsets = UIEdgeInsetsMake(44.0, 0.0, 0.0, 0.0);

答案 1 :(得分:1)

UITableViewController有这种行为,它总是试图最好地适应屏幕大小。 UITableViewController非常适合全屏桌面视图,但我推荐不使用UITableViewController,而是通过实现数据源和委托来自己实现tableViewControler。有些人确实将resizeSubViews设置为NO并解决了他们的问题,但我真的建议你自己重新创建控制器,这不是那么多工作。

答案 2 :(得分:0)

重置表视图nib文件的自动调整大小属性。

你可以在里面找到它: 工具>属性检查器

答案 3 :(得分:0)

首先使用XIB在视图中使用UITableView。然后添加导航栏并调整tableview的大小。你会得到你真正想要的东西。alt text

如果您仍然发现任何问题,请告知我们。

答案 4 :(得分:0)

如果您可以显示您的代码,或截取您的设置截图,那将会更容易。根据我的经验,创建UITableViewController实例并在Interface Builder中将它们挂钩将扩展以填充屏幕。

如何将其连接到“更多”标签?如果它在两个选项卡中,并且您正在执行ANYTHING动态,请检查您的UITableViewController类viewDidLoad方法。除非它们是单独的实例,否则您不必添加/删除/重新添加表。

有些地方要检查:

  1. NSLog你的tableHeaderView高度和位置
  2. NSLog你的tableFooterView高度和位置
  3. 创建一个backgroundView并将其分配给tableView的backgroundView属性,以查看它的真实尺寸以及它的显示位置
  4. 检查UITableViewController的视图起始位置。
  5. 希望我能提供更多帮助。想看看你的设置/代码。