Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/114.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios UIViewController解除ViewController激活不工作_Ios_Uiview_Uiviewcontroller - Fatal编程技术网

Ios UIViewController解除ViewController激活不工作

Ios UIViewController解除ViewController激活不工作,ios,uiview,uiviewcontroller,Ios,Uiview,Uiviewcontroller,我试图关闭一个ViewController,并在其位置上显示另一个ViewController 这就是我的代码的样子 [self dismissViewControllerAnimated:NO completion:nil]; //load currentProjectListViewController currentProjectListViewController = [[CurrentProjectListViewController

我试图关闭一个ViewController,并在其位置上显示另一个ViewController

这就是我的代码的样子

[self dismissViewControllerAnimated:NO completion:nil];

            //load currentProjectListViewController
            currentProjectListViewController = [[CurrentProjectListViewController alloc] initWithNibName:@"CurrentProjectListViewController" bundle:nil];

                [self presentViewController:currentProjectListViewController animated:NO completion:nil];
然而,由于某些原因,视图会快速闪烁,然后保持不变,并像往常一样运行

我受伤了我的密码有误吗?或者在我的代码中是否有我应该寻找的东西。。如果是这样的话,我应该注意什么呢

我已经调试了我的应用程序,但还没有找到问题的根源


在某一方面,它不会偶尔加载下一个视图,而只是很少加载下一个视图!但我不知道为什么。

我建议您做以下几点:

[self dismissViewControllerAnimated:NO completion:^{

    currentProjectListViewController = [[CurrentProjectListViewController alloc] initWithNibName:@"CurrentProjectListViewController" bundle:nil];
    [self presentViewController:currentProjectListViewController animated:NO completion:nil];

}];
或:

事实上,当您调用dismissViewController时,需要一些时间才能生效;在代码中,同时(即,在相同的运行循环周期内),您还要求操作系统提供另一个视图控制器。现在,如果您阅读
dismissViewControllerAnimated:completion:
description,它会声明(粗体):

如果连续呈现多个视图控制器,从而构建呈现视图控制器的堆栈,则在堆栈中较低的视图控制器上调用此方法将取消其直接子视图控制器和堆栈中该子视图控制器上方的所有视图控制器。当这种情况发生时,只有最上面的视图以动画方式被取消;只需从堆栈中删除任何中间视图控制器。最上面的视图使用其模式转换样式关闭,该样式可能与堆栈中较低的其他视图控制器使用的样式不同

因此,在关闭视图控制器的同时显示新的视图控制器之间显然存在冲突。这就解释了为什么事情不起作用,也解释了为什么有时候事情会起作用。这完全取决于这些相互冲突的任务之间的时间安排


如果您像上面所示那样使用dismissViewControllerAnimated完成处理程序,您可以避免这个问题。

很酷,谢谢您的回复。我刚刚试着使用你的代码集,它做的事情和之前发生的完全一样。这对我来说意味着问题出在其他方面。我将继续调试并希望找到一些东西。我明白了。。。我很确定这是一个比赛条件无论如何。。。你会尝试我在编辑后的答案中发布的替代方案吗?它需要创建一个新方法,但应该可以工作。我刚刚再次调试了它,它似乎在进入新方法之前跳回了我的解析器方法。我会弄清楚那里发生了什么,然后看看能不能解决。我有一个函数,它连续处理几个请求,我最近更改了这个函数,以不同的顺序处理它,我现在正在修改,如果是这样的话。。。尽管我已经调试过了,还以为它被腐蚀了。。谢谢你的帮助,我会告诉你我的进展。。不要打扰我,我可能会等一会儿,哈哈,但是如果我得出任何结论,我会在这里给你发消息。嗨,我已经设法调试了我的应用程序,现在它运行正常,但是当我在DismissViewController中设置一个断点时,尝试使用你的代码,因为它从未进入。。而线程永远无法到达方法。。。不确定导致问题的行是什么[self DismissionViewControllerAnimated:NO completion:nil];我不知道该怎么办。但是如果我不使用它,UIViewController会显示。。如果我把它放在新的视图中,它永远不会显示。
-(void)presentOtherVC {

    currentProjectListViewController = [[CurrentProjectListViewController alloc] initWithNibName:@"CurrentProjectListViewController" bundle:nil];
    [self presentViewController:currentProjectListViewController animated:NO completion:nil];
}

....

    [self dismissViewControllerAnimated:NO completion:^{

        [self performSelector:@selector(presentOtherVC) 
               withObject:nil
              afterDelay:0.5f];

    }];