我遇到UITableViewController的tableView在UINavigationController中从UITabBarController呈现时更改其帧位置的问题。从常规选项卡显示时,框架正常。但是,如果我从'More'部分移动并显示UITableViewController,则tableview向下移动与导航栏相同的高度(我不希望它)。当我在正确位置和非正确位置之间测试运行时帧坐标时,它显示为相同(0.0,0.0,320.0,411.0)。 这个问题只发生在我在一个导航控制器中显示tableView然后它被移动并在另一个导航中显示,如“更多”VC到选项卡,或选项卡到“更多”VC
这里发生了什么,我该如何解决这个问题?
最后一张图片是应用程序启动时的样子,应该是导航栏右下方的桌面视图。但是,在前两个中,您可以看到tableview已经向下移动。
提前致谢!
答案 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的大小。你会得到你真正想要的东西。
如果您仍然发现任何问题,请告知我们。
答案 4 :(得分:0)
如果您可以显示您的代码,或截取您的设置截图,那将会更容易。根据我的经验,创建UITableViewController实例并在Interface Builder中将它们挂钩将扩展以填充屏幕。
如何将其连接到“更多”标签?如果它在两个选项卡中,并且您正在执行ANYTHING动态,请检查您的UITableViewController类viewDidLoad方法。除非它们是单独的实例,否则您不必添加/删除/重新添加表。
有些地方要检查:
希望我能提供更多帮助。想看看你的设置/代码。