从viewWillAppear推送viewController

时间:2014-05-27 10:31:05

标签: ios objective-c uinavigationcontroller autolayout

我正在尝试从UIViewControllerviewWillAppear viewDidAppear推送ViewController(被叫A)(被称为B)。哪个工作正常。

但是当我弹出A ... B不会再次推动它(A)(或者我可以说它没有显示它的视图)......但是当我为我的{{禁用AutoLayout后尝试相同时... 1}},弹出后再次按A。

我有3个解决方案来解决这个问题...但我不知道为什么会这样。任何人请更新我这个问题。提前致谢。

启用自动布局时

Storyboard

根据代码,rootViewController将再次推送demoViewController,但它没有显示demoViewController,而navigationController在其堆栈中有demoViewController。

禁用自动布局时

我们假设一切正常。

3 个答案:

答案 0 :(得分:1)

请参阅此问题中给出的答案:Pushing view controller within viewDidAppear doesn't work

在我的情况下,您所描述的内容正在禁用自动布局。这有帮助

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

答案 1 :(得分:0)

我不知道您在IB或代码中定义的视图(以及大小)。开发人员必须掌握有关在IB中使用AutoLayout功能的知识,否则会导致代码中出现非常令人讨厌(意外)的错误。

所以,我强烈建议您阅读这个AutoLayout指南:here我想viewcontroller A的视图中的限制是给出了错误。

更准确地说,请转到此页面:Working with Constraints in Interface Builder

所以,没有尝试可以或应该从这个链接中清楚。

答案 2 :(得分:0)

您想在view ControllerviewDidAppear中将viewWillAppear推送到另一个storyboard。因为在你想要回来之后必须设置变量......

您是否在{{1}}中设置了约束?因为它可以成为它。