在 UIStoryboard 实例化的 UIViewController 中调用自定义函数 (Swift)

Calling custom function inside UIStoryboard-instantiated UIViewController (Swift)

我认为我的问题最好的表达方式是首先概述我要完成的工作,然后给出我的实现,然后是我 运行 遇到的问题。

目标

我正在尝试在我的 iOS 应用程序中创建一个个人资料页面,该页面可以从情节提要中实例化,给定用户 ID,然后从服务器获取所有元数据。

实施

在我的故事板中,我设计了 ViewController 并将 ImageViewsbuttons 等链接为 @IBOutlets。用户(使用该应用程序的人)的主页由 Storyboard 实例化,但其余部分由代码推送。为了抓取数据,我有一个函数loadDataForID(ID: Int)

现在,我遇到的问题是 #instantiateViewControllerWithIdentifier(String) returns 一个 UIViewController 我无法向上转换到我的 ProfileViewController,以便调用数据获取函数。

所以,我的下一个想法是手动创建 ProfileViewController,调用辅助函数,然后推送视图,但随后我 运行 陷入另一个问题:因为所有视图都是 @IBOutlets,并且这个控制器没有被 Storyboard 实例化,它们都是 nil 引用。

由于我是 iOS 开发的新手,我几乎可以肯定有更好的方法来实现它,但我完全被卡住了;我不知道从这里去哪里。是否有解决这些问题的方法,或者我应该以不同的方式做事?

您可以将 instantiateViewControllerWithIdentifier(String) 转换为 ProfileViewController,如下面的代码所示:

let storyboard = UIStoryboard(name: "Main", bundle: nil)
let profileVC = storyboard.instantiateViewControllerWithIdentifier("ProfileViewControllerID") as! ProfileViewController

//Now you can access property of ProfileViewController here

self.presentViewController(profileVC, animated: true, completion: nil)