2017-07-03 113 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」設置爲標識符。