【问题标题】:Xcode pass Array by using segueXcode 使用 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 类型异常终止"

帮我解决这个问题。

感谢阅读。

【问题讨论】:

  • 你必须在类的顶层声明receivedDatagraph(for segue 是什么?
  • 我想使用“Charts”库绘制图表。所以我把 segue 命名为 graph。
  • “在类的顶层声明receivedData”是什么意思?我应该在 View2 上声明吗?
  • top level 表示在viewDidLoad之外

标签: arrays xcode segue


【解决方案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")
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-25
    • 2016-05-20
    • 2015-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多