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视图