ios - 如何将 json 响应从一个视图控制器传递到另一个故事板中的另一个视图控制器
问题描述
如何将我从 api 收到的 json 响应传递给不同故事板中的另一个视图控制器?
我尝试使用 segues 但似乎不起作用
let propass = UIStoryboard(name: "ProfileStoryboard", bundle: Bundle.main).instantiateViewController(withIdentifier: "ProfileViewController") as! ProfileViewController
propass.proDict2 = parseJSON2
解决方案
如果您通过情节提要设置转场,那么当您尝试上面的代码时,它无法通过转场工作是有道理的。问题是,当您设置故事板转场时,该应用程序处理创建一个新 VC 并从您的原始 VC 呈现/显示它。
您在代码中所做的是,您正在实例化同一视图控制器的新版本,这不是正在显示/呈现的视图控制器。
您有两种方法来实现这一点,首先是通过在 ViewController 中覆盖 prepareForSegue 来显示/呈现您的 propass View Controller:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "YOUR SEGUE IDENTIFIER FROM THE STORYBOARD" {
let propassVC = segue.destination as! ProfileViewController
propassVC.proDict = parseJSON2
}
}
实现这一点的另一种方法是删除您在情节提要中设置的转场。然后你像你一样初始化 Propass VC 并将数据传递给它。
let propassStoryboard = UIStoryboard(name: "Main", bundle: nil)
let propassVC = propassStoryboard.instantiateViewController(withIdentifier: "PROPASS IDENTIFIER SET IN STORYBOARD") as ProfileViewController
propassVC.jsonDict = JSONParse2
show(propassVC, sender: nil)
推荐阅读
- android - 世博会:“react-native-wifi-reborn”库不起作用
- c - 使用 GCC 命令行从 .c 文件构建 .ko 文件
- cypress - 如何在柏树中逐页浏览?
- hive - GreenPlum DATE_PART 函数转换为 Hive SQL
- git - git push 错误:致命:无法访问.....端口号以“a”结尾
- r - 相关矩阵和分类变量
- python - ValueError: list.remove(x): x not in list 当我尝试从列表中删除元素时
- javascript - 防止在 ::before 伪元素下出现换行符
- python - 熊猫数据框如何制作散点图以将值列表聚类到一组组中
- azure - 在 IIS 上运行 FastAPI 应用程序时出现网关错误