我有一个启动屏幕,显示了5秒钟。在这段时间之后,我以编程方式调用另一个ViewController(VC_Products),并希望传递参数,但是我的ViewController什么都没收到。
override func viewDidLoad() {
super.viewDidLoad()
//here we set a timer to start after a given amount of seconds the ProductViewController
_ = Timer.scheduledTimer(timeInterval: 5.0, target: self, selector: #selector(timeToMoveOn), userInfo: nil, repeats: false)
}
@objc func timeToMoveOn() {
//change root navigation controller
let appDelegate = UIApplication.shared.delegate as! AppDelegate
appDelegate.changeRootViewControllerToSWRevealViewController()
self.performSegue(withIdentifier: "splashscreen_to_products", sender: self)
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if (segue.identifier == "splashscreen_to_products") {
if let vc: VC_Products = segue.destination as? VC_Products {
vc.titleremote = "variableToPass"
}
}
}
在VC_Products中:
我有以下内容:
var titleremote:String = ""
,并且不会更改为“ variableToPass”。什么都没发生!为什么?
更新:
似乎将rootview控制器更改为SWRevealViewController是导致我无法传递参数的原因。我删除了SWrevealViewController,它起作用了。不知何故,我需要SWRevealViewController拥有左侧菜单,但随后我无法传递数据。我想从启动画面中的远程URL加载图像,然后将它们传递给呈现图像的VC_Products。这是不可能的。我搜寻了两天,找到了一种通过SWRevealViewController传递图像的方法,但是没有成功。现在,我将采用另一种方式,将已加载的图像保存在启动画面中,并保存到临时文件夹中,然后从该位置将图像加载到VC_Products中。那就是我讨厌iOS编码的原因。由于布局限制和调试是在iOS中进行的,因此情节提要和控制器之间的整个导航非常糟糕。在Android中,它可以毫无问题地运行。