将数组数据从一个视图控制器发送到另一个视图

时间:2015-07-23 12:19:46

标签: swift

我正在尝试将数组从一个视图控制器复制到另一个视图控制器,但不知何故它不起作用..我尝试使用此代码:

open util/ordering[S]

在视图控制器中,我想从此代码中发送数据:

let otherVC = TerningspilletViewController()
        mineSpillere = otherVC.mineSpillere2
        println("otherVC")

将要接收此数据的视图控制器具有以下代码:

var mineSpillere = ["Spiller 1", "Spiller 2", "Spiller 3"]

" var mineSpillere2 = [String]() "将显示文本,但当我尝试显示它时,它表示" var mineSpillere"是空的。有什么建议/想法吗?

4 个答案:

答案 0 :(得分:3)

如果你想访问另一个viewController的数组,那么你可以将它保存在内存中,为此你可以这样使用NSUserDefaults

//save
var mineSpillere = ["Spiller 1", "Spiller 2", "Spiller 3"]
var defaults = NSUserDefaults.standardUserDefaults()
defaults.setObject(mineSpillere, forKey: "YourKey")

现在你可以通过这种方式阅读它:

//read
if let testArray : AnyObject? = NSUserDefaults.standardUserDefaults().objectForKey("YourKey") {
    var readArray : [NSString] = testArray! as! [NSString]
    println(readArray)
}

如果你想用你原来的方式来做这就是代码:

<强> FirstViewController.swift

import UIKit

class FirstViewController: UIViewController {

    var mineSpillere = ["Spiller 1", "Spiller 2", "Spiller 3"]
    override func viewDidLoad() {
        super.viewDidLoad()
    }
}

<强> SecondViewController.swift

import UIKit

class SecondViewController: UIViewController {

    var mineSpillere2 = [String]()
    override func viewDidLoad() {
        super.viewDidLoad()

        let otherVC = FirstViewController()
        mineSpillere2 = otherVC.mineSpillere
        println(mineSpillere2)  //[Spiller 1, Spiller 2, Spiller 3]
    }

}

答案 1 :(得分:0)

  

首先结帐你使用故事板

     

如果您使用的是storyboard

let otherVc = UIStoryboard(name: "Main", bundle: NSBundle.mainBundle()).instantiateViewControllerWithIdentifier("storyboardIdendifier") as? TerningspilletViewController
otherVC.mineSpillere2 =  mineSpillere 
println(otherVc)
  

否则就这样做

let otherVC = TerningspilletViewController()
    otherVC.mineSpillere2 =  mineSpillere
    println("otherVC")

答案 2 :(得分:0)

如果您使用的是故事板,我建议您在prepareForSegue中传递数据:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if segue.identifier == "TerningspilletViewSegue" {
        let otherVc = segue.destinationViewController as! TerningspilletViewController
        otherVc.mineSpillere = mineSpillere
    }     
}

答案 3 :(得分:0)

尝试此代码可以正常工作从一个viewController发送数据到另一个viewcontroller.just storyboard id的引用,您可以将数据从一个视图发送到另一个视图。然后我们基于该对象引用创建该类对象,我们可以访问该数组和那些类属性然后只是附加它。

 let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle:nil)
let secondView = storyBoard.instantiateViewController(withIdentifier: "tableView") as! TableViewController.
self.present(secondView, animated: true) {
    let data = nameArray
    secondView.models.append(data!)
    secondView.tableView.reloadData()
}