swift - swift 将 NSArray 传递给下一个 View Controller

标签 swift xcode8 ios10 apple-developer

swift 新手,希望能得到我的答案。我需要将 NSArray 传递给下一个 View Controller ,并在按下按钮时以随机顺序传递。我在第二个 View Controller 中声明了 UILabel 和一个变量,segue 似乎可以正常工作。唯一的问题是它没有传递任何值(value)。这是我的代码。

    @IBAction func ressedbutton(_ sender: Any) {

    let quotes: NSArray = ["Quote 000", "Quote 001", "Quote 002"]

    let range: UInt32 = UInt32(quotes.count)

    let randomNumber = Int(arc4random_uniform(range))
    let QuoteString = quotes.object(at: randomNumber)

   // self.resul.text = QuoteString as? String





    performSegue(withIdentifier: "showresult", sender: QuoteString)

    let myVC = storyboard?.instantiateViewController(withIdentifier: "result") as! result

    myVC.stringPassed =
        (QuoteString as? String)!



}

第二个 View 的代码是

类结果:UIViewController {

var stringPassed = ""
@IBOutlet weak var ResultLabel: UILabel!


override func viewDidLoad() {
    super.viewDidLoad()

    ResultLabel.text = stringPassed

我认为我的问题出在 myvc.stringpassed=...?我有的arry如何随机传入?

提前致谢。

最佳答案

您需要做的是在 performSegue 中使用 sender 传递该值,然后在 prepare(for:sender:) 中访问该值> 并将值传递给 destinationController。

performSegue(withIdentifier: "showresult", sender: QuoteString)

现在在 prepare(for:sender:) 中使用这个 sender 参数

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if let vc = segue.destination as? result, let data = sender as? String {
        vc.stringPassed = data
    }
}

关于swift - swift 将 NSArray 传递给下一个 View Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43868038/

相关文章:

ios - 导航栏隐藏在viewwillappear后显示

ios - UISplitViewController 在 iPhone 上出现键盘时调整应用内容的大小

objective-c - 使用旧版 Swift 语言版本

iOS 10 - Objective-C : How to implement AVCapturePhotoOutput() to capture image and videos?

swift - 如何使用本地数据保存 subview - swift

swift - 添加工具栏 JSQMessagesViewController

ios - 导出已连接,但在展开可选值时意外发现 nil

ios - 在 swift3 和 firebase 中将数据发送到服务器

ios - Xcode 8 中的给定功能 Visual Memory Debugger 的其他用途是什么

ios - Xcode 8 - 删除了一些按钮边框