我想在兩個視圖控制器之間切換。兩個ViewController都從CenterViewController繼承。下面的代碼是一個視圖控制器(CertificatenViewController)添加到堆棧:替換ViewController
centerViewController = CertificatenViewController(nibName: "CertificatenViewController", bundle: nil)
centerViewController.delegate = self
centerNavigationController = UINavigationController(rootViewController: centerViewController)
view.addSubview(centerNavigationController.view)
addChildViewController(centerNavigationController)
centerNavigationController.didMoveToParentViewController(self)
這發生在viewDidLoad中,並在同一個班我有一個switch語句來檢查哪些視圖必須加載,這樣的事情:
switch menuItem.getNibname() {
case "CertificatenViewController":
print(menuItem.getNibname())
centerViewController = CertificatenViewController(nibName: menuItem.getNibname(), bundle: nil)
centerViewController.delegate = self
case "SettingsViewController":
print(menuItem.getNibname())
centerViewController = SettingsViewController(nibName: menuItem.getNibname(), bundle: nil)
centerViewController.delegate = self
default: break
}
我不知道到底是什麼問題,但它似乎是視圖沒有重新加載。我試過popViewControllerAnimated但這不起作用。也許你可以幫我解決這個問題。
解決方案:
func changeView(menuItem: MenuItem){
self.centerNavigationController.viewControllers.removeAll()
switch menuItem.getNibname() {
case "CertificatenViewController":
print(menuItem.getNibname())
self.centerNavigationController.pushViewController(self.centerViewController, animated: false)
case "SettingsViewController":
print(menuItem.getNibname())
self.centerNavigationController.pushViewController(self.settingsViewController, animated: false)
case "MessagesViewController":
print(menuItem.getNibname())
self.centerNavigationController.pushViewController(self.messagesViewController, animated: false)
default: break
}
}
你是指兩個View Controller之間**改變**的含義是什麼?如果你的意思是推或模態地呈現下一個視圖控制器,你所做的是不正確的。下面的答案向您展示瞭如何呈現視圖控制器。 –