Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 切换到另一个选项卡项时,如何从uitabbarcontroller隐藏以前的uiview_Ios_Uitabbar_Uitabbaritem - Fatal编程技术网

Ios 切换到另一个选项卡项时,如何从uitabbarcontroller隐藏以前的uiview

Ios 切换到另一个选项卡项时,如何从uitabbarcontroller隐藏以前的uiview,ios,uitabbar,uitabbaritem,Ios,Uitabbar,Uitabbaritem,我有两个上下选项卡,当我单击tabbaritem UIView show时,但当我单击另一个选项卡项时,上一个视图仍保留在控制器中。代码是 - (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item { switch (item.tag) { case 0: { NSLog(@"home"); homeViewControlle

我有两个上下选项卡,当我单击tabbaritem UIView show时,但当我单击另一个选项卡项时,上一个视图仍保留在控制器中。代码是

- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item
{


    switch (item.tag) {
        case 0:
        {
            NSLog(@"home");
            homeViewController *homeVc= [[homeViewController alloc] initWithNibName:@"homeViewController" bundle:nil];
            [self.view insertSubview:homeVc.view belowSubview:tabBar];
            break;
        }
        case 1:
        {

             NSLog(@"compus");
    compusViewController *compusVc= [[compusViewController alloc] initWithNibName:@"compusViewController" bundle:nil];
        [self.view insertSubview:compusVc.view belowSubview:tabBar];
            break;

        } 

没有直接的方法可以简单地删除所有子视图。必须为所有子视图调用removeFromSuperview。幸运的是,代码很简洁。使用[self.containerView.subview makeObjectsPerformSelector:@selector(removeFromSuperview)]。-Sikhapol Saijit

首先,每次点击选项卡栏时,您都会创建一个新的
UIViewController
实例,这肯定会导致内存泄漏。您应该缓存并重用它们。其次,您应该创建一个容器视图,并在其中添加/删除您的内容。另外,您是否确定已将
tag
属性设置为所有选项卡栏项目、bot顶部和底部栏?您可以考虑使用<代码> [ [ TababBar项目]索引对象:项目] < /代码>以获得索引而不是<代码>标签< /代码>。请参阅@SikhapolSaijit ok,如果我为总视图创建一个容器视图,那么我调用哪个方法来删除视图……没有直接的方法可以简单地删除所有子视图。您必须为所有子视图调用
removeFromSuperview
。幸运的是,代码很简洁。使用
[self.containerView.subview makeObjectsPerformSelector:@selector(removeFromSuperview)]
@SikhapolSaijit谢谢。。。