Ios 将显示从视图中推送viewController

Ios 将显示从视图中推送viewController,ios,objective-c,uinavigationcontroller,autolayout,Ios,Objective C,Uinavigationcontroller,Autolayout,我正在尝试从ViewController(称为B)的viewwillbeen或viewdidabeen推送UIViewController(称为a)。这很好用 但是当我突然出现一个。。。B不再推它(A)(或者我可以说它没有显示它的视图)。。。但当我在为我的情节提要禁用自动布局后尝试相同操作时,它会在弹出后再次推送A 我有3个解决方案来解决这个问题。。。但我不知道为什么会这样。任何人请告诉我这个问题的最新情况。提前谢谢 启用自动布局时: (ViewDid

我正在尝试从
ViewController
(称为B)的
viewwillbeen
viewdidabeen
推送
UIViewController
(称为a)。这很好用

但是当我突然出现一个。。。B不再推它(A)(或者我可以说它没有显示它的视图)。。。但当我在为我的<代码>情节提要禁用自动布局后尝试相同操作时,它会在弹出后再次推送A

我有3个解决方案来解决这个问题。。。但我不知道为什么会这样。任何人请告诉我这个问题的最新情况。提前谢谢

启用自动布局时:

                      (ViewDidAppear)   
rootViewController —————————————————————> demoViewController
                    (Push: animation:NO)


                       (Button Press)   
demoViewController —————————————————————> rootViewController
                    (Pop: animation:NO)
根据代码,rootViewController将再次推送demoViewController,但它不显示demoViewController,而navigationController的堆栈中有demoViewController

禁用自动布局时:

                      (ViewDidAppear)   
rootViewController —————————————————————> demoViewController
                    (Push: animation:NO)


                       (Button Press)   
demoViewController —————————————————————> rootViewController
                    (Pop: animation:NO)
一切都在按照我们的设想进行

我不知道您在IB或代码中定义了什么视图(以及大小)。开发人员必须全面了解如何在IB中使用AutoLayout功能,否则会导致代码中出现非常严重(意外)的错误

因此,我强烈建议您阅读本《自动布局指南》:我猜viewcontroller A视图中的约束导致了错误

更准确地说,请转到本页:


因此,如果不尝试,可以或应该从该链接中清除。

您不能在
视图中将
视图控制器推入另一个
视图中。因为当你想回来的时候,你必须设置变量


您是否在
情节提要中设置了约束?因为它可以从中变成。

请参阅此问题中给出的答案:

在我的情况下,您所描述的是在禁用自动布局的情况下发生的。这有帮助

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 250 * USEC_PER_SEC), dispatch_get_main_queue(), ^{
    [self.navigationController pushViewController:[self.storyboard instantiateViewControllerWithIdentifier:@"myScreen"] animated:YES];
});

好的,您可能永远不应该使用ViewWillDisplay或ViewDidDisplay来推送viewController。因为在您按下“后退”按钮后,它会弹出(在ViewDidDisplay的情况下),并立即再次按下同一个viewController(或者在ViewWillDisplay的情况下-它可能损坏navigationController viewController堆栈,因为它会在尝试弹出viewController时按下viewController)事实上,我已经在那里设置了一些条件。。。但我也有解决办法。。。但我需要理由。。因为它在禁用自动布局时工作,可能会出现一些动画冲突。您可以同时关闭和按下,这可能会导致动画崩溃。在按下之前,尝试在视图中添加一个小延迟(如0.1秒)。如果它有效,那么我是对的。我没有在故事板中添加任何约束。。。默认为空。