在Swift中的页面视图控制器内的视图控制器之间传递数据

时间:2017-06-14 14:08:40

标签: ios swift uiviewcontroller segue uipageviewcontroller

对不起,如果这个特殊问题被问到,我跟着其他线程的答案,但似乎没有一个工作,但我刚开始学习Swift所以这对我来说都是新的。

因此,我在两个视图控制器中有一个文本字段,我希望第三个视图控件在我按下按钮时根据其他两个控制器的输入显示结果。

我跟着this tutorial并放置了我之前说过的文字字段,标签和按钮。 我在ViewControl.swift中放置了我的代码(您可以在下面看到)。

问题在于,当我尝试运行它时,在最后两行中出现“Thread 1:EXC_BAD_INSTRUCTION(code = EXC_I386_INVOP,subcode = 0x0)”错误。

class ViewController: UIViewController {

var a: String = ""
var b: String = ""

@IBOutlet weak var aTextField: UITextField!
@IBOutlet weak var bTextField: UITextField!
@IBOutlet weak var calculateButton: UIButton!
@IBOutlet weak var resultLabel: UILabel!

@IBAction func calculateButtonPressed(_ sender: UIButton) {
    let a = aTextField.text!;  
    let b = bTextField.text!;

我认为错误来自于视图之间没有传递的数据(因为在我将所有内容放在同一个视图中并且工作正常之前),但由于我只有一个ViewController.swift文件,我无法弄清楚如何使用Segue。

2 个答案:

答案 0 :(得分:0)

不要多次声明相同的变量。在let之前移除a& b。您已经宣布a&全局b,然后尝试在IBAction

中重新声明它
class ViewController: UIViewController {

var a: String = ""
var b: String = ""

@IBOutlet weak var aTextField: UITextField!
@IBOutlet weak var bTextField: UITextField!
@IBOutlet weak var calculateButton: UIButton!
@IBOutlet weak var resultLabel: UILabel!

@IBAction func calculateButtonPressed(_ sender: UIButton) {
     a = aTextField.text!;  
     b = bTextField.text!;

答案 1 :(得分:0)

  1. Make sure your control outlets are setted properly.
  2. In your two variables a & b are re-declared.Just update your code like below
@IBAction func calculateButtonPressed(_ sender: UIButton) {
    self.a = aTextField.text!
    self.b = bTextField.text!
}