OGeek|极客世界-中国程序员成长平台

标题: iOS 7 问题 : viewDidDisappear not being called after viewWillDisappear [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-12 18:01
标题: iOS 7 问题 : viewDidDisappear not being called after viewWillDisappear

我遇到的问题是,当我尝试使用当前 ViewController 的 iOS7 viewDidDisappear 中的默认返回 swipeGesture 弹出 View Controller 时> 并不总是在 viewWillDisappear 之后被调用。我使用 UINavigationController 作为 rootViewController

在这种情况下,应用程序仍然被触发并且不会收到任何用户输入。有时应用程序崩溃,当我查看日志时:它显示“无法将自身添加为 subview”,并且在崩溃日志中,它显示 EXC_BAD_ACCESS。如何解决这个问题,但是当我在导航栏应用程序中使用后退按钮时正常工作。

- (void)viewWillDisappearBOOL)animated
{
//            [self.navigationController.navigationBar setAlpha:1.0f];
    [self createBarButtonITems];
    self.navigationItem.title = @"Back";
}

- (void)viewDidDisappearBOOL)animated
{
    [self zoomOutTableWithoutAnimation];
}

-(void)zoomOutTableWithoutAnimation
{
    backgroundView.frame = CGRectMake(0,0,320,480);
    backgroundView.transform=CGAffineTransformMakeScale(1, 1);

    sideMenuTableView.transform=CGAffineTransformMakeScale(0.5,0.5);
    sideMenuTableView.frame = CGRectMake(0,150,self.view.frame.size.width/2, self.view.frame.size.height);
    sideMenuTableView.hidden = YES;
}



Best Answer-推荐答案


正如您提到的向后滑动手势,这可能是由于交互式弹回。 正如 WWDC 2013 中提到的, session 使用 View Controller 的自定义转换,您不能假设 viewWillDisappear 后面会跟着 viewDidDisappear。 viewWillAppear 和 viewDidAppear 也是如此。

我不知道你为什么要打电话 [自行创建BarButtonITems] 在 viewWillDisappear 中,您的意思是 viewWillAppear 吗? 无论如何,在我看来 [self createBarButtonITems] 产生了一些副作用。

尝试在 viewWillDisappear 中使用以下代码来撤消副作用:

- (void)viewWillDisappear
{
   [self doSomethingHasSideEffect];
   id <UIViewControllerTransitionCoordinator> coordinator;
        coordinator = [self transitionCoordinator];
        if(coordinator && [coordinator initiallyInteractive]) 
        {
            [coordinator notifyWhenInteractionEndsUsingBlock:
             ^(id <UIViewControllerTransitionCoordinatorContext> ctx) 
             {
                 if(ctx.isCancelled) 
                 {
                     [self undoAnySideEffect]
                 }
             }]; 
        }
}

关于iOS 7 问题 : viewDidDisappear not being called after viewWillDisappear,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21038639/






欢迎光临 OGeek|极客世界-中国程序员成长平台 (http://sqlite.in/) Powered by Discuz! X3.4