我在UITabBarController中有4个UITableViewController。它们都使用相同的UITableViewController类,但在最后3个控制器上,tableView未正确显示:tableView的顶部显示在navigationBar下,而第一个正确显示
我尝试通过以编程方式设置“MCVigilanceSingleColorViewController”类(继承自UITableViewController)中的tableView contentInset来解决问题,但它应用于我的四个控制器(然后我的第一个UITableViewController的tableView现在有一个错误的框架...... )。
在故事板中,我的4 UITableViewController也使用相同的类,它们都是一样的:我的4个ViewControllers完全相同。第2,第3和第4个控制器是第一个“复制/粘贴”(我刚刚更改了barItemText)。然后他们都选中了相同的选项并取消选中。顺便说一句,检查“underTopBard”选项对我显示的控制器没有影响。我似乎不明白为什么它们的显示方式不同。
你帮帮我吗? THX。答案 0 :(得分:1)
在UINavigationController中嵌入UITableViewController可以解决这个问题。从故事板中可以很容易地完成。只需选择UITableViewController,然后转到Editor>嵌入>导航控制器。
答案 1 :(得分:0)
我遇到了同样的问题,在automaticallyAdjustsScrollViewInsets
中包含UIViewController
的情况下,这听起来像是与UITabBarController
相关的错误。我通过将以下代码添加到viewDidLoad
:
self.automaticallyAdjustsScrollViewInsets = NO;
CGFloat statusBarHeight = [UIApplication sharedApplication].statusBarFrame.size.height;
CGFloat navigationBarHeight = self.navigationController.navigationBar.frame.size.height;
CGFloat tabBarHeight = self.tabBarController.tabBar.frame.size.height;
self.internalTableView.contentInset =
self.internalTableView.scrollIndicatorInsets =
UIEdgeInsetsMake(statusBarHeight + navigationBarHeight, 0, tabBarHeight, 0);
其中internalTableView
是UIScrollView
,例如UITableView
。
答案 2 :(得分:0)
我遇到了同样的问题,在发现没有真正正当理由导致这种情况后,我决定加入“黑客”来解决这个问题......
这就是为什么我添加了这个,它很快但你可以将它转换为objective-c easy:
var navBarHeight:CGFloat = 0
if let nc = self.navigationController {
navBarHeight += nc.navigationBar.frame.height
navBarHeight += UIApplication.sharedApplication().statusBarFrame.size.height
}
//iterate over vc's
if let vc = self.viewControllers {
//enumerrate allows for the tuple, setting a key
for (key, c) in enumerate(vc) {
//first view displays correctly
if (key > 0) {
if let controller = c as? BaseListViewController {
controller.automaticallyAdjustsScrollViewInsets = false
controller.tableView.contentInset = UIEdgeInsets(
top: navBarHeight,
left: 0,
bottom: 0,
right: 0
)
}
}
}
}
super.viewDidLoad()
这是我的UITabBar的Base类(我明显扩展了它)。 基本上,它检查是否有多个选项卡应该有第二个,++将调整其contentInsets在顶部加上额外的,与navBar +状态栏类似。
我希望这有助于某人。