我有一个自定义TabViewController,它根据选择的UITabBarItem
将子视图添加到当前视图。对于不同的子视图,我模拟了导航栏和标签栏,以便子视图与显示时的格式相匹配。包含UILabel的一个子视图显示正常,但是UITableView的子视图与UITabBar重叠。但是在Interface Builder中,我将UITableView的大小设置为不切断UITabBar。
在TabViewController中添加子视图
[self.view addSubview:subViewController.view];
答案 0 :(得分:1)
您没有提供足够的信息以确定,但我认为您将表视图添加到错误的视图中。假设self
是您的UITabBarController子类,您将在覆盖整个屏幕的视图中添加自定义视图,包括标签栏。
相反,您应该将自定义视图添加到所选视图控制器的视图中:
[self.selectedViewController.view addSubview:subViewController.view];
这将限制您添加到标签栏控制器内容区域的内容,并且不会与标签栏重叠。
我不确定你用这种方法想要实现什么:似乎将subViewController添加到UITabBarController管理的一组视图控制器更有意义,而不是弄乱视图层次结构
此外,从笔尖加载视图然后在代码中操作它们本身并没有什么问题。 “混合风格”不是问题。
答案 1 :(得分:0)
正如Legolas所说,似乎你在这里混合风格。鉴于您需要从代码中推送它,您可以尝试从代码中完全实例化对象,例如:
UITableView *table = [[UITableView alloc] initWithFrame:CGRectMake(x, y, width, height)];
table.delegate = self; //or whatever the delegate is
table.dataSource = self; //or wherever the datasource is
...然后将其添加到您需要的任何视图中。
如果全部失败,请仔细检查您的笔尖,并确保为显示标签栏,导航栏等设置了正确的选项,因为这会影响大小。