Xcode 使用 segue 传递数组
Posted
技术标签:
【中文标题】Xcode 使用 segue 传递数组【英文标题】:Xcode pass Array by using segue 【发布时间】:2019-08-12 12:46:13 【问题描述】:我做了一个数组,并把一些值放进去。
通过使用 segue,
我想将数组发送到另一个视图。
这里是代码。
-- 视图1 -----
override func viewDidLoad()
super.viewDidLoad()
var receivedData: Array<String> = Array()
receivedData.append("0.123")
receivedData.append("0.190")
receivedData.append("0.210")
receivedData.append("0.213")
@IBAction func graph(for segue: UIStoryboardSegue, sender: Any?)
if segue.destination is GraphViewController
let vc = segue.destination as? GraphViewController
vc?.transferedData = receivedData
-- 视图2 -----
var transferedData: Array<String> = Array()
但它不起作用。
有错误点赞
“发送到实例的无法识别的选择器”
“由于未捕获的异常'NSInvalidArgumentException'而终止应用程序, 原因:无法识别的选择器发送到实例“
" libc++abi.dylib: 以未捕获的 NSException 类型异常终止"
帮我解决这个问题。
感谢阅读。
【问题讨论】:
你必须在类的顶层声明receivedData
。 graph(for segue
是什么?
我想使用“Charts”库绘制图表。所以我把 segue 命名为 graph。
“在类的顶层声明receivedData”是什么意思?我应该在 View2 上声明吗?
top level 表示在viewDidLoad
之外
【参考方案1】:
receivedData
数组的引用将无法在您创建的 viewDidLoad()
方法之外访问。您必须将其声明为该类的全局数组,然后您可以在整个类中访问该数组。
请在viewDidLoad()
函数之外声明receivedData
。请执行以下操作。
var receivedData: Array<String> = Array()
override func viewDidLoad()
super.viewDidLoad()
receivedData.append("0.123")
receivedData.append("0.190")
receivedData.append("0.210")
receivedData.append("0.213")
【讨论】:
以上是关于Xcode 使用 segue 传递数组的主要内容,如果未能解决你的问题,请参考以下文章
Xcode中多个Segues中通过UITableViews传递数据(三个Segues)
使用 segue 传递图像的指针类型不兼容?目标c Xcode
准备使用数组进行 Segue - Xcode 8.0 Swift 3.0
使用 segue 在 View Controller 之间传递变量