如何解决通过使用共享实例设置viewController属性仍然为零
我有两个viewControllers:
1 / LoginViewController
2 / BibliothequeViewController
我通过单击 LoginViewController 中的按钮来显示 BibliothequeViewController ,同时尝试与 BibliothequeViewController 进行通信> LoginViewController 展示了它。
所以在 LoginViewController 中,我有这个:
@IBAction func onLibrariesButtonClicked(_ sender: Any) {
let storyboard: UIStoryboard = UIStoryboard(name: "Main",bundle: nil)
let vc: BibliothequesViewController = storyboard.instantiateViewController(withIdentifier: "BibliothequesViewController") as! BibliothequesViewController
BibliothequesViewController.sharedInstance.presentedBy=self
print("INSIDE LoginViewController.onLibrariesButtonClicked,BibliothequesViewController.sharedInstance.presentedBy",BibliothequesViewController.sharedInstance.presentedBy!)
// Logs LoginViewController
self.present(vc,animated: true,completion: nil)
}
在 BibliothequesViewController 内部,我有这个:
class BibliothequesViewController: UIViewController {
// presentedBy represents which view has presented the BibliothequesViewController
// So that when a library is selected,I go back to the ViewController that presented BibliothequesViewController
var presentedBy: UIViewController?
override func viewDidLoad() {
super.viewDidLoad()
print("INSIDE viewDidLoad,presentedBy: ",presentedBy)
// Logs nil
}
}
如您所见,在 LoginViewController 代码中,BibliothequesViewController.sharedInstance.presentedBy
已设置为 LoginViewController 。
但是在 BibliothequeViewController 内部,它是nil
,应为 LoginViewController 。
解决方法
我尝试过:
print("INSIDE BibliothequesViewController,BibliothequesViewController.sharedInstance.presentedBy",BibliothequesViewController.sharedInstance.presentedBy!)
然后我记录了 LoginViewController 。这样我就得到了我需要的东西。
但是我希望上面的代码也能工作。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。