Ios 如何将数据传递到viewcontroller并在将其推送到导航堆栈之前加载它?
我有一个带有集合视图的视图控制器,当我单击一个单元格时,我将一个变量传递给另一个视图控制器,然后将其推送到导航堆栈上Ios 如何将数据传递到viewcontroller并在将其推送到导航堆栈之前加载它?,ios,swift,uiviewcontroller,uinavigationcontroller,segue,Ios,Swift,Uiviewcontroller,Uinavigationcontroller,Segue,我有一个带有集合视图的视图控制器,当我单击一个单元格时,我将一个变量传递给另一个视图控制器,然后将其推送到导航堆栈上 func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) { self.performSegueWithIdentifier("nextVC", sender: self.userArray[indexPath.row])
func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) {
self.performSegueWithIdentifier("nextVC", sender: self.userArray[indexPath.row])
}
这是我发送变量的方式:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
super.prepareForSegue(segue, sender: sender)
let nextVC = segue.destinationViewController as! NextVC
if let senderId = sender!.objectForKey("uId") {
nextVC.userId = senderId as! String
}
}
这个下一个视图控制器(nextVC)上有很多东西。我已经尽了我所能来优化它,但它仍然需要一些时间来加载所有的东西。有没有一种方法可以让我为segue做准备,传递变量,让下一个vc做它该做的事情,然后当它完成加载后,实际上就开始了?(或展示)?我看到了其他一些关于预加载视图控制器的问题,但没有一个涉及到传递变量。这个变量非常重要,因为nextVC中的所有内容都必须知道这个变量(基于单元格接触),否则它将无法加载。我希望我解释得足够清楚,谢谢您的时间。如果您访问
destinationViewController
的view
属性,它将触发视图的加载。因为您并不真正需要视图
,所以只需将其分配给
,即可使编译器满意
试试这个:
if let senderId = sender!.objectForKey("uId") {
nextVC.userId = senderId as! String
_ = nextVC.view
}
这将触发viewDidLoad
在segue发生之前运行。确保设置下一个TVC的代码在viewDidLoad
中,您应该可以开始了。是的,但它不会马上继续吗?没有给它加载时间?除非你在后台线程中加载内容,否则我认为视图将在\uu=nextVC.view
完成后加载,这是在segue发生之前。你试过了吗?是的,没什么区别耶,viewdide
在赛后才会出现。你能把代码移到viewDidLoad
吗?很高兴我能帮忙!