iPhone上UINavigationController中的viewControllers视图大小调整

3
我正在使用UINavigationController来处理应用程序中视图控制器的推送和弹出。其中一个部分有一个选项卡栏(不使用UITabbarController),由同一个UINavigationController管理,我只需将UITabBar添加到导航控制器视图中(通过使用addSubview)。
问题: 我有一些带有表格视图的UIViewControllers被推入导航堆栈中,由于我的Tab Bar是视图的一部分而不是导航堆栈,所以由于导航控制器不知道选项卡栏,因为它在其视图而不是导航堆栈中,TableViews在底部被截断。如果没有导航控制器,我只需调整ViewControllers视图大小即可正常工作,但是当我尝试这样做时,似乎导航控制器会忽略我的框架并设置自己的框架,因此表格视图被截断。我找到了一种解决方案,即添加一些额外的单元格并隐藏它们,这个方法有点hackish,有没有任何建议以不同的非hackish方式解决这个问题?
谢谢。

我知道,我有点烦恼,导航控制器不允许我调整它的视图控制器的大小。 - Daniel
你能展示一些关于问题的截图吗? - Jonah
我找到了答案,谢谢Jonah...屏幕看起来像是一个TableView和一个TabBar,而且TabBar覆盖了TableView的最后几个单元格(它不会滚动超过那个位置)。 - Daniel
2个回答

1
好的,我解决了这个问题。我之前尝试调整UITableView而不是viewController的大小,但这并没有起作用。我意识到这不起作用是因为我正在使用UITableViewController来管理自己的tableView,并且不让我更改它的框架(也许我在错误的地方更改了它,尝试在viewDidLoad中更改,如果我在调用[super viewDidload]后更改它,它可能会起作用.. o吼)。所以我将类更改为UIViewController并在其中管理tableView,现在它运行良好,感谢回复。

底部工具栏怎么样?你能移动它吗? - bentford

0

尝试将根视图设置为包含一个UITableView的UIView。然后将UITabBar添加到UIView实例中。现在UITableView将不会知道UINavigationController的存在。


这并不是很好看,我想让我的视图控制器来管理我的表视图...不过我已经找到了答案,之前我尝试过但没有成功,现在它可以了,看看吧。 - Daniel
我可能没有讲清楚。实际上,您现在为主视图拥有一个UIViewController实例和为表视图拥有一个UITableViewController实例。UITableViewController实例是UIViewController实例的一个ivar。这也很好地分离了管理表和管理UINavigationBar、加载子视图等职责... - Corey Floyd
巧合的是,这与您当前的解决方案类似,但仍具有使用UITableViewController管理表格的额外好处。 - Corey Floyd

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接