【发布时间】:2016-03-24 20:44:49
【问题描述】:
我有一个嵌入在导航控制器 (NAV1) 中的视图控制器 (VC1)。在其 viewWillAppear 方法中,我调用以模态方式呈现另一个视图控制器。在一种情况下,我需要用动画呈现新的视图控制器(VC2),而在另一种情况下,它应该在没有动画的情况下呈现。 VC2 也嵌入在它自己的导航控制器(NAV2)中。
当动画标志设置为 TRUE 时一切正常。当我将标志设置为 FALSE 时,出现了一些问题:
1. 我在控制台中收到以下警告:不鼓励在分离的视图控制器上呈现视图控制器
2. 当我在调用dismissViewControllerAnimated:FALSE completion:nil 后从VC2 移回时,VC1 的viewWillAppear 方法不会被调用。如果动画标志设置为 TRUE,它就会被调用。
在 VC1 中:
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
[self performSelector:@selector(importStuff:)
withObject:nil];
}
-(void)importStuff
{
//instatntiate VC2
//instantiate NAV2
[Utility presentViewController:pNavController
fromViewController:self
animated:FALSE
completion:nil];
// the above method calls the presentViewController:animated:completion: method
}
在 VC2 中:
[Utility dismissViewController:self
animated:FALSE
completion:nil];
上述方法调用dismissViewControllerAnimated:方法。
【问题讨论】:
-
听起来你在错误的地方展示了新的视图控制器?
viewDidAppear怎么样? -
您已经呈现的视图未完全呈现,您正在尝试呈现另一个控制器,如果没有动画,所花费的时间要少得多,因此在呈现您的父母之前完成
-
在 viewDidLoad 中添加此代码后尝试。
-
在 viewDidAppear 中添加代码确实解决了问题。在 viewDidLoad 中添加它不是我的解决方案。
标签: ios objective-c