【发布时间】:2014-10-15 11:26:48
【问题描述】:
在我的 ios 应用中,假设我有三个 ViewControllers:A、B 和 C。
来自A 我提出B 并指定A 作为代表。在B 上完成操作后,我想关闭B 并从A 呈现C。但是,我想在屏幕上完全不显示A 的情况下执行此操作。这是我现在的代码,在类A:
-(void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
B *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"B-identifier"];
vc.delegate = self;
[self presentViewController:vc animated:NO completion:^{}];
}
那么这是 A 内部的委托函数,B 在执行操作时调用:
- (void) actionPerformed
{
[self dismissViewControllerAnimated:YES completion:^{
C *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"C"];
[self presentViewController:vc animated:NO completion:nil];
}];
然而,这会导致 C 出现一段时间(在调用解除之后),即使我将呈现代码放在解除的完成处理程序中。我能做些什么来避免这种情况?
【问题讨论】:
-
兄弟,根据我的说法,最好的方法是将 B 和 C 添加为 A 的子视图控制器,而不是模态显示它们。如果你愿意,我可以给你代码。
-
我正在使用这种机制来处理登录——所以 A 是根视图控制器,它检查用户是否登录。如果没有,它会显示登录视图(视图控制器 B)。一旦用户登录,它就会显示 C.
-
@iDeveloper 显示您的代码,让您了解处理 childviewcontroller 的含义以及您如何在不显示视图控制器的情况下做到这一点
-
@NarasimhaiahKolli 您可以在父类中使用 [self transitionFromViewController: toViewController: duration: options: animations: completion:] 方法在两个 childViewController 之间进行转换。我希望你得到我兄弟。
-
@iDeveloper 谢谢你.. 很有帮助。
标签: ios object presentviewcontroller