故事板 — 视图切换(segue)与传值

1、传值问题:为什么不能给控件的接口赋值
如执行Segue跳转
[self performSegueWithIdentifier:GAPlayeVideo sender:gaVideo];
//在跳转到目标界面前,给目标对象传递参数
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
     if ([segue.identifier isEqualToString:GAPlayeVideo]){
        //获取目标ViewController
        GAPlayerViewController *gaPlay=segue.destinationViewController;
        //传递参数
        gaPlay.gaVideo=sender;
    }
}
当执行了这句: gaPlay.gaVideo=sender;
系统就会来到这个对象的成员变量的setting方法,
-(void)setGaVideo:(GAVideo *)gaVideo{
    _gaVideo = gaVideo;
    self.titleLabel.text = gaVideo.name; //self.titleLabel 是UILabel类型的输出接口,在storyBoard中的GAPlayerViewController类绑定的vc界面上
    self.title = gaVideo.name;
    self.VideoURL = [NSURL URLWithString:gaVideo.videoSite]; //self.VideoURL:是自定义的成员变量,可以赋值
//    NSLog(@"%@",gaVideo.videoSite);
}
注意了:此时,只是给gaVideo这个自定义的成员变量赋值;但是self.titleLabel这个输出接口控件,还在storyBoard中,还没有初始化,还没有加载进来,因此 self.titleLabel = nil,所以是不能给self.titleLabel赋值的(因为这个对象都没有,怎么可以给它的属性赋值呢)。
此外,自定义的成员变量是可以给他们赋值的,因为当创建这个GAPlayerViewController类的对象的时候,就创建了。
 
那么,到了什么时候才可以给控件的接口赋值呢?
答:当Viewdidload的时候就可以赋值。
在xib中也是如此,因此要注意他们创建的时机。
原文地址:https://www.cnblogs.com/lignpeng/p/5444738.html