2017-05-30 18 views
1

我在VC A,我走在VC編程B,然後VC B沒有塞格斯去VC Cperform(segueWithIdentifier:)崩潰)。 但是如果我使用segue去VC B,那麼我可以調用segue去VC C上的UIViewController沒有塞格斯創建編程

這裏是我的代碼崩潰:

VC A

// Method A (that does not crash) 
// self.performSegue(withIdentifier: "gotoB", sender: self) 

// Method B (that crashes) 
let dst = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "vcB") 
if let navigator = navigationController { 
    navigator.pushViewController(vc, animated: true) 
} 

VC B

self.performSegue(withIdentifier: "gotoC", sender: self) // crashes here 

的事情是,我希望能夠從任何地方到達VC B ,因此使用導航控制器進行編程式推送。我想了解爲什麼發生這種情況,以及如何實現我想要的。謝謝。

+0

你註冊賽格瑞標識符「GOTOC」一旦檢查 –

+0

什麼是崩潰日誌控制器? –

+0

@srinivasn是的,我有segue'gotoC',因爲它使用segue從'A'到'B'。但是,當我使用'navigationControler'推送'B'時,它會崩潰。 – Dliix

回答

1

如果你想從任何地方到達這個VC,你必須通過編程方式從故事板實例化它,然後呈現/推送它。事情是這樣的:

let storyboard = UIStoryboard(name: "Main", bundle: Bundle(for: self)) 

    let viewController = storyboard.instantiateViewController(withIdentifier: "YourViewControllerId") 

    navigationController.push(viewController, animated: true) 

務必將StoryboardID在故事板對這一觀點

+0

然而,感謝您的快速回答,這是我目前正在做的。但是當我使用這個方法時,createViewController沒有segues,因此'執行(segueWithIdentifier :)'崩潰。我不知道爲什麼。通過故事板創建一個VC應該鏈接所有segues的權利? – Dliix

+0

你不需要使用segues –

+0

是的,我這樣做是因爲vc'B'從另一個項目重定向到vc'C'並且它使用了segues。儘管我願意,但我無法改變這種行爲。 – Dliix

相關問題