使用数组准备转场 - Xcode 8.0 Swift 3.0

D. *_*phy 0 xcode segue swift

将项目添加到一个 VC 上的数组然后使用“准备转场”将数组传输到另一个 VC 的最佳方法是什么?到目前为止,这是我设法想出的:(VC1)

var items: [String] = ["Hello"]
Run Code Online (Sandbox Code Playgroud)

(VC2):

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {

    var destViewController: ViewController = segue.destination as! ViewController
    destViewController.items = [textField.text!]
    items.append(textField.text!)
}
Run Code Online (Sandbox Code Playgroud)

在 VC2 上出现一个错误,指出“使用未解析的标识符”就行

items.append(textField.text!)
Run Code Online (Sandbox Code Playgroud)

小智 5

我对 iOS/Swift 很陌生,但我最近遇到了同样的情况。这是我如何做到的。

SourceViewController.swift

class SourceViewController: UIViewController {
    let stringToPass = "Hello World"

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        let destinationVC = segue.destination as! DestinationViewController
        destinationVC.receivedString = stringToPass
        }
    }
Run Code Online (Sandbox Code Playgroud)

DestinationViewController.swift

class DestinationViewController: UIViewController {

    var receivedString: String?

    if let newString = receivedString {
        print(newString)
    }
...
Run Code Online (Sandbox Code Playgroud)

我意识到这与您的示例略有不同,但需要注意的重要一点是,当您创建“destinationVC”时,您就可以修改它的属性。主要区别在于您必须在分配值时或在您的情况下附加到数组时提供变量的范围(destinationVC.receivedString):

destViewController.items.append(textField.text!)
Run Code Online (Sandbox Code Playgroud)

如果不提供范围,Xcode 将无法找到您尝试修改的变量(标识符),因为它不是当前文件的一部分或导入的一部分。