我在 subview
中有以下方法:
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
[self.delegate performSegueWithIdentifier:@"segueAdicionarRefeicaoSearch" sender:[NSString stringWithFormat:@"%@", self.arrayLabels[indexPath.row]]];
// Remove from Superview
[self.view removeFromSuperview];
}
这段代码会在 performSegue
动画完成之前移除 View ,视觉效果不是很好。
我知道一种解决方案是像这样删除 View :
[self.view performSelector:@selector(removeFromSuperview) withObject:nil afterDelay:0.25f];
但我认为为动画选择 TimeInterval
过于机械化。我可以使用一些不同的东西吗?
我还可以获取导航堆栈中的 subview
索引,并在到达下一个 View 的 viewDidAppear
时将其删除。但我认为这会更加复杂。
有什么想法吗?
最佳答案
根据 View 是什么或您需要删除它的原因,一种选择是在 - (void)viewDidDisappear:(BOOL)animated
中调用它 我不知道您为什么需要从 Controller 中移除 View ,但这个方法肯定是在动画之后调用的。
- (void)viewDidDisappear:(BOOL)animated
{
[super viewDidDisappear:animated];
[self.whateverView removeFromSuperview];
}
编辑: 根据您的回复,您也可以在 viewWillAppear: 中执行此操作,因为听起来您只在返回到 viewController 时才不想要它
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear];
[self.whateverView removeFromSuperview];
}
关于ios - 在 viewController 转换完成后 removeFromSuperview。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21888995/