一、傳值問題:爲何不能給控件的接口賦值
如執行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中也是如此,所以要注意他們建立的時機。