在第一个vc显示之前,从一个viewcontroller到下一个viewcontroller的转换不会发生?

时间:2015-07-27 14:35:39

标签: ios swift

逻辑是这样的:

app委托触发主视图控制器(UIViewController,没什么特别的)。代码检查是否需要转到不同的viewcontroller 而不显示当前的。我使用代码:

    let vc = storyboard!.instantiateViewControllerWithIdentifier("NextViewController")
    self.presentViewController(vc, animated: true, completion: nil)

我可以在viewDidAppear中获得正确的行为,因为我们已经在显示内容,所以为时已晚。在viewWillAppear中移动代码会抱怨vc不在视图层次结构中。

最好的方法是什么?我应该开始使用导航控制器吗?

2 个答案:

答案 0 :(得分:1)

您是否尝试过检查您的应用代理并执行此类操作? :

let vc = storyboard!.instantiateViewControllerWithIdentifier("NextViewController")
self.window.setRootViewController(vc)

答案 1 :(得分:0)

如果你决定使用UINavigationController,你可以在第一个VC的viewDidLoad:方法中执行检查,并在没有动画的情况下执行segue到下一个视图控制器。

这样的segue就像这样做

·H:

#import <UIKit/UIKit.h>

@interface PushNoAnimationSegue : UIStoryboardSegue

@end

的.m:

#import "PushNoAnimationSegue.h"

@implementation PushNoAnimationSegue

- (void)perform{
    [[[self sourceViewController] navigationController] pushViewController:[self destinationViewController] animated:NO];
}

@end