Ios 切换到另一个选项卡项时,如何从uitabbarcontroller隐藏以前的uiview
我有两个上下选项卡,当我单击tabbaritem UIView show时,但当我单击另一个选项卡项时,上一个视图仍保留在控制器中。代码是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
- (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谢谢。。。