ios - 在 viewController 转换完成后 removeFromSuperview。

标签 ios objective-c uiviewcontroller uinavigationcontroller

我在 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/

相关文章:

ios - 错误 - 找不到接受所提供参数的 '-' 的重载

iphone - 如何使用 objective-c 库连接到 iPhone 上的 RTSP h.264 流

ios - 在一个 Controller 中显示两个 View 组件,但来自两个文件(xib/storyboard)

ios - 导航卡在 rootviewcontroller 上

iphone - UIViewController 添加 subview 给我错误 : unrecognized selector

ios - 如何在编译源中设置编译器标志以从构建配置中省略文件

ios - didBeginContact 方法未按预期工作

ios - 从容器 View 继续

iOS 根据路径显示/取消屏蔽图像?

ios - 如何获取特定的通知计数