【问题标题】:Why does my transmitted variable always remain empty? [duplicate]为什么我的传输变量总是为空? [复制]
【发布时间】:2021-03-24 20:20:40
【问题描述】:

嗨,最近我尝试从 ViewController 1 发送一个变量:

guard let viewController2 = self.storyboard?.instantiateViewController(withIdentifier: "ViewController2") as? ViewController2 else
                {
                    fatalError("Error when trying to get the reference to the Step 2")
                }
        viewController2.testName = TextFieldOutlet.text!

到 ViewController2 :

class ViewController2: UIViewController {
    @IBOutlet weak var labelTest: UILabel!
    
    public var testName = ""

    override func viewDidLoad() {
        super.viewDidLoad()
        labelTest.text = testName
    }
    
}

所有代码似乎都是正确的,但我在 ViewController2 中的标签和变量仍然为空。

有人可以帮我吗?

【问题讨论】:

    标签: ios swift iphone xcode ipad


    【解决方案1】:

    您可以不调用它,而是需要通过操作触发它,这就是为什么我在图像中添加了一个按钮,并在它和 viewController2 之间建立连接,并使用它的 segue 并且效果很好

    图片:

    viewController中添加的代码:

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        
         let viewController2 = segue.destination as! ViewController2
         viewController2.testName = TextFieldOutlet.text!
        
        
    }
    

    【讨论】:

      【解决方案2】:

      代码看起来不错,你应该调试它。 在将其设置为 viewController2.testName 之前打印(TextFieldOutlet.text)。 或使用断点找出问题。

      【讨论】:

      • 感谢您的回答,我尝试打印我的 TextField 并得到:"Optional("Test")" 所以它可以工作。即使我将 "viewController2.testName = TextFieldOutlet.text" 替换为 "viewController2.testName = "John"" 它仍然不起作用。你知道这个问题吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多