Ios viewController转换完成后从SuperView移除。

Ios viewController转换完成后从SuperView移除。,ios,objective-c,uiviewcontroller,uinavigationcontroller,Ios,Objective C,Uiviewcontroller,Uinavigationcontroller,我在子视图中有以下方法: -(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { [self.delegate performSegueWithIdentifier:@"segueAdicionarRefeicaoSearch" sender:[NSString stringWithFormat:@"%@", self.arrayLabels[indexPat

我在
子视图中有以下方法:

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    [self.delegate performSegueWithIdentifier:@"segueAdicionarRefeicaoSearch" sender:[NSString stringWithFormat:@"%@", self.arrayLabels[indexPath.row]]];
    // Remove from Superview 
    [self.view removeFromSuperview];
}
这段代码的作用是在
performsgue
动画完成之前删除视图,视觉效果不太好

我知道一个解决方案是像这样删除视图:

[self.view performSelector:@selector(removeFromSuperview)with object:nil afterDelay:0.25f]

但我认为这太机械了,无法为动画选择
时间间隔。有什么不同的东西我可以用吗

我还可以在导航堆栈中获取
子视图
索引,并在到达下一个视图的
视图显示时将其删除。但我认为这会更加复杂


有什么想法吗

根据视图是什么或需要删除它的原因,一个选项是在
-(void)viewdidegase:(BOOL)animated
中调用它,我不知道为什么需要从控制器中删除视图,但此方法肯定是在动画之后调用的

- (void)viewDidDisappear:(BOOL)animated
{
    [super viewDidDisappear:animated];

    [self.whateverView removeFromSuperview];
}
编辑: 根据您的回答,您也可以在ViewWillExample中执行此操作:因为只有当您返回到viewController时,听起来您才不想要它

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear];

    [self.whateverView removeFromSuperview];
}

为什么需要删除它?为什么不
视图消失:
?这是一个
子视图
,在另一个
视图上占据了我屏幕的一半。转到另一个视图并返回后,此
子视图仍然存在。这就是为什么我认为我需要删除。不是吗?还是我遗漏了什么?谢谢。如果不知道它是什么的子视图,就无法判断。是否仍应根据要求提供?如果没有,则将其移除…想象一下VC1,按下按钮将打开该问题的
子视图
,打开一些基本单元格进行选择并移动到VC3。差不多就是这样,当用户从VC3返回到VC1时,我不希望这个子视图出现在那里。这很公平。出于兴趣,为什么是
self.view
?为什么不
self.options查看
或其他什么?这是一个
子视图
,它占据了我屏幕的一半,位于另一个
视图
之上。转到另一个视图并返回后,此
子视图仍然存在。这就是为什么我认为我需要删除。不是吗?还是我遗漏了什么?谢谢。好吧,那就不是self.view了,而是self.mycustomview或其他名称。您不想删除ViewController视图