如何将TabBar控制器作为子视图添加到父视图中?

3
- (void)viewDidLoad 
{
    [super viewDidLoad];

    UITabBarController *controller = [self.storyboard instantiateViewControllerWithIdentifier:@"tabbar"];
    [self addChildViewController:controller];
    controller.view.frame = CGRectMake(0,0, 500, 500);
    [self.view addSubview:controller.view];
    [controller didMoveToParentViewController:self];
}

我该如何将tabbar视图控制器作为子视图添加到Objective-C的uiviewcontroller中?

你不是已经这样做了吗 [self.view addSubview:controller.view];?否则,请更具体地描述你的问题。 - deimus
谢谢,我试过了,但是我在父屏幕上看不到选项卡栏,这就是我的问题。 - New iOS Dev
检查了框架?500宽度比iPhone屏幕宽度大。 - David Ansermot
是的,这只是为了测试,一旦我的主要问题解决了,我会进行更正。 - New iOS Dev
@sss 你解决了这个问题吗?我也遇到了完全相同的问题。应该添加选项卡控制器(因为第一个视图控制器会调用 API,我看到它确实调用了),但是什么都没有显示出来... - dondonhk
3个回答

0

您已经创建了UITabBarController *controller的框架,如下所示-

controller.view.frame = CGRectMake(500,500, 500, 500);

x 和 y 坐标的原点是 500,看起来选项卡控制器已经被添加了,但它的原点在屏幕可见范围之外。


我已经纠正了它,但我的主要问题仍然存在。 - New iOS Dev
@sss 你尝试过调整自动调整大小的掩码吗? - deimus

0
if let controller = self.storyboard?.instantiateViewController(withIdentifier: "TabController") as? TabController {
        addChildViewController(controller)
        controller.view.frame = contentView.bounds
        contentView.addSubview(controller.view)
        controller.didMove(toParentViewController: self)
    }

这里的'contentView'是在ViewController中定位的UIView


0

如前所述,您已在此处执行 [self.view addSubview:controller.view]

选项卡控制器视图的自动调整大小掩码假定其父视图的完整大小。

如果您在实例化选项卡控制器时设置了框架,请确保更改选项卡视图的autoresizingMask属性,以便它不具有可变宽度或可变右边距。


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