2017-10-02 10 views
1

2つのビューの間に文字列を渡しています。私の値は最初は正しく来ていますが、2番目のビューはnullです。目的関数-cの2番目のビューで値がNULLです。

ここでは、アーティスト名をあるビューから他のビューに渡すためにsegueとstringを使用しています。最初のビューでは値は正しく来ていますが、2番目のビューではnullです。詳細については2番目のビュー

[super viewDidLoad]; 
NSLog(@"VIEWDID LOAD CALLED"); 
LyricsViewController *lycVC = [[LyricsViewController alloc] init]; 

defaults = [NSUserDefaults standardUserDefaults]; 

// Do any additional setup after loading the view. 
UILabel *artistnameLBL ; 
[artistnameLBL setTag:105]; 
lycVC.strValue = strValue; 

artistnameLBL.text =[NSString stringWithFormat:@"Hi! %@ ",strValue]; 
NSLog(@"ARTIST NAME : %@",artistnameLBL.text); 
+0

ここで 'UILabel * artistnameLBL;'はあなたが**を指している** UILabel'ポインタを定義しています**。 Objective-Cでは、 'nil'にメッセージを送ると、プログラムは**何もしません**、しかし' artistnameLBL'は何も指しません。 2番目のビューには、最初のビューラベルについては何も分かりません(同じ名前を使用すると、最初のビューコントローラのものとは異なるローカル変数のみが作成されます)。ビューコントローラ(または初心者には推奨しない他の難しいメソッド)の間で実際に値を渡すには、セグおよびパブリックプロパティ(ヘッダファイルで定義されています)を使用する必要があります。 –

+0

iOSプログラミングに関するビデオを実際に見ることをお勧めします(特にスタンフォード大学のものをiTunes Uで無料でお勧めします)。これはさらに進める前に学ぶ必要がある基本的なものです。 –

+0

私はそれをやってみました、それは動作していません。 – Riddhi

答えて

0
(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    if ([[segue identifier] isEqualToString:@"YOUR_SEGUE_NAME_HERE"]) 
    { 
    LyricsViewController *lycVC= (LyricsViewController *) segue.destinationViewController 
    lycVC.strValue=valueToPassStr; 
    } 
} 

で最初のビュー

NSArray *artistnameArray = [value valueForKey:@"artistName"]; 
NSString *artistnameString = [artistnameArray objectAtIndex:indexPath.row]; 
UILabel *artistnameLBL = (UILabel *)[cell viewWithTag:102]; 
artistnameLBL.text = artistnameString; 
valueToPassStr =artistnameLBL.text; 
NSLog(@"ARTIST NAME : %@",artistnameLBL.text); 

if ([valueToPassStr isEqualToString:@""]) 
{ 
    NSLog(@"myString IS empty!"); 
    artistnameLBL.text = @""; 
} 
else 
{ 
    NSLog(@" IS NOT empty, it is: %@", valueToPassStr); 
    LyricsViewController *lycVC= [[LyricsViewController alloc] initWithNibName:@"LyricsViewController" bundle:nil]; 
    lycVC.valueToPassStr = artistnameLBL.text; 
    [lycVC setStrValue:valueToPassStr]; 
    lycVC.strValue = valueToPassStr; 
    NSLog(@"VALUE IS PASSED : %@",lycVC.strValue); 

は、以下のlinkを確認してください。

+0

Xcodeの警告を避けるには、実際に目的のビューコントローラーをキャストすることをお勧めします: 'LyricsViewController * lycVC =(LyricsViewController *)segue.destinationViewController;' –

+0

こんにちは、thxでは動作しません。 secondVCで、あなたは私を助けてくれますか? – Riddhi

+0

ありがとうアレハンドロ、私は私の電話で応答しています。 – casillas

関連する問題