2017-07-03 112 views
0

我是iOS新手。我有一个非常类似的需求,比如我的Android项目。要求是在我的登录活动onCreate(),我正在检查一些条件,如果它是真的,那么我使用Intent启动我的下一个活动。执行Segue从viewDidLoad()

我试图从我的iOS应用程序执行相同的功能。在我的LoginViewController viewDidLoad(),检查一些条件后,我打电话给[self performSegueWithIdentifier:@"myNextControllerSegue" sender:nil];

但是,我的ViewController没有改变到下一个视图控制器。任何帮助,将不胜感激。

+0

打电话给你在主线程中继续或移动到viewdidappear或viewwillappear –

+1

请确保你在'Storyboard'中配置了同名的mysectlerSegue'。 –

+0

@ Anbu.Karthik它没有工作,如果我在viewWillAppear()中调用它。当我将逻辑移动到viewDidAppear()时,它正在工作,但我看到闪烁的地方,我也可以看到我的登录界面。如何避免这种闪烁? –

回答

0

需要在正确的位置执行segue。您试图在第一个层次结构之前加载另一个视图。因此,您调用了viewDidAppear,您有一个完全加载的视图进行修改。

- (void)viewDidAppear:(BOOL)animated 
    { 
     [super viewDidAppear:animated]; 
     [self performSegueWithIdentifier:@"myNextControllerSegue" sender:nil]; 
    } 

要消除闪烁,只需在您的viewWillApear方法中隐藏视图。

否则如快速搜索,你可以做到这一点到主线程也喜欢下面

dispatch_async(dispatch_get_main_queue(), {() -> Void in 
    //perform segue 
}) 
+0

我看到一个轻微的闪烁,我也可以看到旧的视图。如何避免这一点? –

+0

@HelloWorld只是隐藏viewWillApear方法中的视图。 –

1

viewDidLoad:不适用于继续执行。您应该在viewDidAppear:中调用segue,其中视图结构已经建立。

0

在你的故事板,单击您的视图控制器上,进入“连接检查”部分,在“触发塞格斯” ,将“+”按钮拖到您想要到达的控制器上。

现在点击您的segue并继续“属性检查器”部分,并将“myNextControllerSegue”设置为标识符。