如何使segue传递字符串起作用?

时间:2019-06-04 02:26:41

标签: ios swift segue

我正在尝试通过segue将字符串从视图控制器传递到另一个视图控制器,但是它不起作用。

Xcode 10,Swift 4,iOS 10。

viewcontroller.swift代码:

import UIKit

class ViewController: UIViewController {
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if segue.identifier == "segue_vc_to_myvc" {
            let vc = segue.destination as! MyViewController
            vc.str = "hello"
        }
    }
}

Myviewcontroller.swift:

import UIKit

class MyViewController: UIViewController {
    @IBOutlet weak var label:UILabel!

    var str: String? = nil

    override func viewDidLoad() {
        super.viewDidLoad()
        //label.text = str
        if let str = str {
            print(str)
        }
    }

我想在屏幕上显示字符串,但是没什么。我尝试使用标签,但标签仍然一无所有。

如果我使用label.text = str,则错误消息为:

self    _0190603.MyViewController   0x000000010130a490
UIKit.UIViewController  UIViewController    
label   UILabel?    nil none
str String? nil none

set the break point and error message

segue.identifier

the label have nothing...

2 个答案:

答案 0 :(得分:0)

在情节提要中检查两个页面之间的Segue标识符。 enter image description here

然后确保您触发正确的方法来执行segue。

类似的东西

@IBAction func NextPageAction(_ sender: Any) {
    performSegue(withIdentifier: "second_page", sender: nil)
}

在'if segue.identifier == blablabla'处添加一个断点,看看这里发生了什么

   override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if segue.identifier == "second_page" {
            let page = segue.destination as! SecondeViewController
            page.txt = "hello world"
        }
    }

答案 1 :(得分:0)

检查是否正确设置了标识符。它应该可以正常工作!