我在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
动画完成之前删除视图,视觉效果不太好。
我知道一个解决方案就是删除这样的视图:
[self.view performSelector:@selector(removeFromSuperview) withObject:nil afterDelay:0.25f];
但我认为选择动画的TimeInterval
太机械了。我可以使用不同的东西吗?
我还可以在导航堆栈中获取subview
索引,并在到达下一个视图的viewDidAppear
时将其删除。但我认为这会更复杂。
有什么想法吗?
答案 0 :(得分:2)
取决于视图是什么或为什么需要删除它,一个选项是在- (void)viewDidDisappear:(BOOL)animated
中调用它我不知道为什么你需要从控制器中删除视图,但这个方法肯定在动画之后调用。
- (void)viewDidDisappear:(BOOL)animated
{
[super viewDidDisappear:animated];
[self.whateverView removeFromSuperview];
}
修改强> 根据您的回复,您也可以在viewWillAppear中执行此操作:因为听起来只有当您返回到viewController时才需要它
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear];
[self.whateverView removeFromSuperview];
}