且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

iOS:using Segue in Popover

更新时间:2022-09-23 08:07:30

今晚被一个问题搞半天,如果你使用segue时,正常的执行顺序是,先执行源ViewController的prepareForSegue,再执行目标VC的ViewDidLoad,所以你可以在prepareForSegue对目的VC的相关属性进行设置,进而达到传值的目的。但是当你segue是使用在Popover的场合时,情况就不一样了,系统是先调用目的的ViewDidLoad再调用源VC的prepareForSegue,颠倒过来了,所以刚刚说的赋值传值的方法就行不通了(特别是你在目的的ViewDidLoad就要用到该属性进行一些逻辑的时候)。

解决方法:方法1、放弃segue,直接代码添加popover。

destinationVC = [storyboard instantiateViewControllerWithIdentifier:@"destinationVC"];

destinationVC.mmm = @"hello zhan!";

popover =  [[UIPopoverControlleralloc]initWithContentViewController:destinationVC];//运行这句会才调到目的的ViewDidLoad

.......

方法2、把你在viewDidLoad的逻辑放在一个函数中,在源VC的prepareForSegue掉用改逻辑。这个***也有提到http://***.com/questions/8838160/prepareforsegue-is-not-called-after-performseguewithidentifier-with-popover-st

 本文转自老Zhan博客园博客,原文链接:http://www.cnblogs.com/mybkn/archive/2012/12/02/2798757.html,如需转载请自行联系原作者