我有一個ViewController
:如果用戶沒有登錄,我打開一個模塊化的新控制器,以便用戶可以登錄。開幕做這樣:調用從模態呈現視圖控制器的方法
if(!loggedIn){
self.performSegue(withIdentifier:"loginView", sender:self)
}
登錄後,我要關閉此模式,並回到我的ViewController:這是很容易做到的,但我想另一件事。我希望呈現視圖控制器在我解散我的模態之前調用此方法:
func goToContent(animated:Bool){
let viewController:ContentViewController = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "Content") as! ContentViewController
self.navigationController!.pushViewController(viewController, animated: animated)
}
這可能嗎?從我的模式,我無法獲得對呈現viewController的引用。那就是:我嘗試以下,但我不知道這是否是正確的前進方式:
let vc:ViewController = ViewController()
vc.goToContent(animated:false)
這工作,但不存在更好的解決方案?
[編輯回覆在評論一個問題] 我實現了一個代表這樣說:
在視圖控制器:
class ViewController: UIViewController, LoginViewControllerDelegate {
var loginViewController:LoginViewController = LoginViewController()
override func viewDidLoad() {
super.viewDidLoad()
loginViewController.delegate = self
}
在LoginViewController文件,只需在類聲明之前:
protocol LoginViewControllerDelegate: class {
func goToContent(animated:Bool)
}
Inside LoginViewController:
weak var delegate: LoginViewControllerDelegate?
在其看來
沒有負載(只是用於測試:我簡單的把goToContent的體內打印):
delegate?.goToContent()
你有沒有試過這個...如果是的話會發生什麼問題? – KKRocks
有沒有問題:我想知道如果從我的模式安裝呈現視圖控制器是正確的方式進行。我無法得到我的呈現控制器的參考,因爲它是通過segue(performSegue) –
打開的,請添加您的代碼以呈現? – KKRocks