Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.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 无法删除子视图控制器_Ios_Objective C - Fatal编程技术网

Ios 无法删除子视图控制器

Ios 无法删除子视图控制器,ios,objective-c,Ios,Objective C,我正在尝试在函数didselectrowatinexpath中添加子视图控制器。但是我无法删除我添加的这个子视图控制器。这就是我尝试过的: - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { MiddleViewController *middleVC =[self.storyboard instantiateViewControllerWit

我正在尝试在函数
didselectrowatinexpath
中添加子视图控制器。但是我无法删除我添加的这个子视图控制器。这就是我尝试过的:

 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath  *)indexPath
  {

    MiddleViewController *middleVC =[self.storyboard instantiateViewControllerWithIdentifier:@"MiddleViewController"];



  if(isMenuExpanded==NO){

    isMenuExpanded=YES;
   middleVC.view.hidden=FALSE;
[middleVC.view setFrame:CGRectMake(-320, 0, self.view.frame.size.width, self.view.frame.size.height)];



[self addChildViewController:middleVC];
[self.view addSubview:middleVC.view];
[middleVC didMoveToParentViewController:self];

  [UIView animateWithDuration:0.3 animations:^{
    [middleVC.view setFrame:CGRectMake(38, 0, self.view.frame.size.width, self.view.frame.size.height)];


   }];

}else{
    isMenuExpanded=NO;


    //here i am trying to remove the child view controller
     middleVC.view.hidden=TRUE;
    [middleVC willMoveToParentViewController:nil];
    [middleVC.view removeFromSuperview];
    [middleVC removeFromParentViewController];



     }
  }

我还尝试隐藏视图控制器。

您无法隐藏它,因为您每次单击单元格时都在创建一个新的
MiddleViewController实例

您需要做的是全局声明
MiddleViewController*middleVC
(您可以在类的.h文件中声明)-

在您的
didSelect
方法中-替换此行-

MiddleViewController *middleVC =[self.storyboard instantiateViewControllerWithIdentifier:@"MiddleViewController"];
根据本守则—

if(middleVC == nil) {
     middleVC =[self.storyboard instantiateViewControllerWithIdentifier:@"MiddleViewController"];
}

您不能隐藏它,因为每次单击单元格时,您都在创建一个新的
MiddleViewController
实例

您需要做的是全局声明
MiddleViewController*middleVC
(您可以在类的.h文件中声明)-

在您的
didSelect
方法中-替换此行-

MiddleViewController *middleVC =[self.storyboard instantiateViewControllerWithIdentifier:@"MiddleViewController"];
根据本守则—

if(middleVC == nil) {
     middleVC =[self.storyboard instantiateViewControllerWithIdentifier:@"MiddleViewController"];
}

在我看来,当点击发生时,您试图切换“菜单视图”(middleVC),但为什么每次都要创建一个新实例?我看到的是,您试图隐藏尚未添加到视图中的内容


如果我是你,我会将实例化部分从didSelectRowAtIndexPath中取出(以查看DIDLOAD或其他内容),并保留引用。

在我看来,当点击发生时,你试图切换“菜单视图”(middleVC),但为什么每次都要创建新实例?我看到的是,您试图隐藏尚未添加到视图中的内容


如果我是你,我会将实例化部分从didSelectRowAtIndexPath中取出(以查看didload或其他内容),并保留引用。

请查找更改,您也可以这样做

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath  *)indexPath
{

    MiddleViewController *middleVC =[self.storyboard instantiateViewControllerWithIdentifier:@"MiddleViewController"];

   if(isMenuExpanded==NO)
{

    isMenuExpanded=YES;
    middleVC.view.hidden=FALSE;
    [middleVC.view setFrame:CGRectMake(-320, 0, self.view.frame.size.width, self.view.frame.size.height)];


    **middleVC.view.tag=8010;**
    [self addChildViewController:middleVC];
    [self.view addSubview:middleVC.view];
    [middleVC didMoveToParentViewController:self];

    [UIView animateWithDuration:0.3 animations:^{
        [middleVC.view setFrame:CGRectMake(38, 0, self.view.frame.size.width, self.view.frame.size.height)];


    }];

}
else
{
    isMenuExpanded=NO;

    **for(UIView *view in [self.view subviews])
    {
        if(view.tag == 8010)
           [view removeFromSuperview];
    }**
}

请找到变化,你也可以这样做

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath  *)indexPath
{

    MiddleViewController *middleVC =[self.storyboard instantiateViewControllerWithIdentifier:@"MiddleViewController"];

   if(isMenuExpanded==NO)
{

    isMenuExpanded=YES;
    middleVC.view.hidden=FALSE;
    [middleVC.view setFrame:CGRectMake(-320, 0, self.view.frame.size.width, self.view.frame.size.height)];


    **middleVC.view.tag=8010;**
    [self addChildViewController:middleVC];
    [self.view addSubview:middleVC.view];
    [middleVC didMoveToParentViewController:self];

    [UIView animateWithDuration:0.3 animations:^{
        [middleVC.view setFrame:CGRectMake(38, 0, self.view.frame.size.width, self.view.frame.size.height)];


    }];

}
else
{
    isMenuExpanded=NO;

    **for(UIView *view in [self.view subviews])
    {
        if(view.tag == 8010)
           [view removeFromSuperview];
    }**
}

你在改变观点吗?使用容器或viewController?我正在设置此子视图控制器本身的动画。是否切换某些视图?使用容器或viewController?我正在制作这个子视图控制器本身的动画。谢谢@jenis应该知道这一点。谢谢@jenis应该知道这一点。