我正在从数据库中检索数据,在该数据库中,我为获得的每个项目实例化一个视图控制器。
let vc = self.sb.instantiateViewController(withIdentifier: "BabyVC")
现在,我想访问视图控制器并设置数据,但是迷路了。我认为,就像在C#中一样,我会做类似的事情:
let vc = self.sb.instantiateViewController(withIdentifier: "BabyVC") as! BabyViewController
vc.babyNameLabel.text = baby.name
但是标签返回nil。
互联网说要使用segues和委托,但是当我将视图控制器作为变量时,是否不可能以另一种方式呢?
编辑: 标签仅用于测试,不知道设置标签是问题所在。我没有设置标签,而是设置了一个结构。可行。
答案 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
}
}