在实例化视图控制器中设置数据

时间:2018-07-08 21:10:53

标签: swift

我正在从数据库中检索数据,在该数据库中,我为获得的每个项目实例化一个视图控制器。

let vc = self.sb.instantiateViewController(withIdentifier: "BabyVC")

现在,我想访问视图控制器并设置数据,但是迷路了。我认为,就像在C#中一样,我会做类似的事情:

let vc = self.sb.instantiateViewController(withIdentifier: "BabyVC") as! BabyViewController
vc.babyNameLabel.text = baby.name

但是标签返回nil。

互联网说要使用segues和委托,但是当我将视图控制器作为变量时,是否不可能以另一种方式呢?

编辑: 标签仅用于测试,不知道设置标签是问题所在。我没有设置标签,而是设置了一个结构。可行。

1 个答案:

答案 0 :(得分:1)

标签为nil,直到VC加载在类内设置字符串var并为其分配值,然后从该字符串在viewDidLoad中设置标签的文本

let vc = self.sb.instantiateViewController(withIdentifier: "BabyVC") as! BabyViewController
vc.lblText = "Name"

//

class BabyViewController:UIViewController {

  @IBOutlet weak var babyNameLabel:UILabel!
  var lblText = ""
  override func viewDidLoad() {
    super.viewDidLoad()
    self.babyNameLabel.text = lblText 
 }
}