我使用此代碼在ViewController中的容器內加載視圖控制器而不使用任何segue。 例子:從另一個控制器加載視圖控制器
let newViewController =self.storyboard?.instantiateViewController(withIdentifier: "FBViewController")
newViewController!.view.translatesAutoresizingMaskIntoConstraints = false
self.cycleFromViewController(oldViewController: self.currentViewController!, toViewController: newViewController!)
self.currentViewController = newViewController
此代碼工作的任何控制器,但在一種情況下,我需要加載一個名爲FBViewController控制器,並在其viewDidLoad中我檢查,如果用戶登錄,如果他是我想加載另一個控制器而不是立即使用FBViewController。 我嘗試這個代碼FBViewController的viewDidLoad中內:
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let controller = storyboard.instantiateViewController(withIdentifier: "userProfilePage")
self.present(controller, animated: true, completion: nil)
我試圖調用在主視圖控制器的方法來加載想要的視圖:
let otherViewController: ViewController = ViewController()
otherViewController.loggedIn()
方法:
func loggedIn(){
let newViewController = self.storyboard?.instantiateViewController(withIdentifier: "userProfilePage")
newViewController!.view.translatesAutoresizingMaskIntoConstraints = false
self.cycleFromViewController(oldViewController: self.currentViewController!, toViewController: newViewController!)
self.currentViewController = newViewController
}
他們都沒有工作。我感謝任何幫助。
您的代碼部分不完整,所以無法理解。但要確保當你嘗試呈現新的控制器時,你應該在主線程中完成它。我不知道你的目標是什麼,但是你可以在其他ViewController上展示新的控制器,或者如果你使用的是導航控制器而不是推新控制器。如果可能的話給出你的需求的細節,並且可能是更詳細的代碼部分。 – Premal
@Premal我編輯了描述,現在希望它顯而易見。 –
請勿在視圖中使用該代碼進行加載,在視圖內部使用它確實出現。 –