VC 1:
func onSelectOption(sender: UITapGestureRecognizer) {
let vc2 = VC2()
vc2.selectedValue = "1"
navigationController?.pushViewController(vc2, animated: true)
}
VC 2:
var selectedValue: String?
override func viewDidLoad() {
super.viewDidLoad()
print(selectedValue) //prints nil
}
任何人都可以解释为什么selectedValue
在VC2上为零吗?
答案 0 :(得分:0)
尝试一下(仅在情节提要中起作用):-
func onSelectOption(sender: UITapGestureRecognizer) {
let nextVC = self.storyboard?.instantiateViewController(withIdentifier: "yourIdentifyerName") as! VC2
vc2.selectedValue = "1"
navigationController?.pushViewController(nextVC, animated: true)
}
答案 1 :(得分:0)
向initialiser
接受VC2
的自定义selectedValue
。
class VC1: UIViewController {
@objc func onSelectOption(sender: UITapGestureRecognizer) {
let vc2 = VC2(selectedValue: "1")
navigationController?.pushViewController(vc2, animated: true)
}
}
class VC2: UIViewController {
var selectedValue: String?
init(selectedValue: String?) {
super.init(nibName: nil, bundle: nil)
self.selectedValue = selectedValue
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
override func viewDidLoad() {
super.viewDidLoad()
print(selectedValue) //prints Optional("1")
}
}
由于创建的VC2
中没有storyboard
,因此只有在调用selectedValue
之后才能设置viewDidLoad()
。