2012-05-09 5 views
0

私はプロパティに値を代入し、prepareForSegue中にプロパティに値を代入しようとすると[UIViewController <null selector>]が返されますか? prepareForSegue中

2012-05-09 23エラーを取得しよう:14:22.122 LeakSpotter [17709:15b03] *キャッチされない例外のために終了アプリ「NSInvalidArgumentException 」、理由: ' - [のUIViewController setCoordLong:]:認識されないセレクターインスタンス0xa86e930に送ら'

ヘッダ:

@property (nonatomic, retain) NSString *CoordLong; 
@property (nonatomic, retain) NSString *CoordLat; 

彼らのar sythesized。

- (無効)prepareForSegue:(UIStoryboardSegue *)セグエ送信者:(ID)、送信者{

NSLog(@"Fired segue %@", [segue identifier]); 
if([[segue identifier] isEqualToString:@"returnToLeakSpotter"]){ 
    NSLog(@"Return to leak spotter segue..."); 
    //ContactsViewController *cvc = (ContactsViewController *)[segue destinationViewController]; 

}else if ([[segue identifier] isEqualToString:@"gotoTakePhoto"]) { 
    NSLog(@"Go to photo view"); 
    takePhotoViewController *takePhotoC = [segue destinationViewController]; 

    takePhotoC.CoordLong = @"-9.88"; 
    takePhotoC.CoordLat = @"45.45"; 

私が何かを明らかに逃したことがありますか? CoordLatが何であるかを知らない

それがベースのUIViewControllerのインスタンス化されるので、あなたは、ストーリーボードにあなたのtakePhotoViewControllerのビューコントローラのサブクラスを設定していないようおかげ

答えて

4

が見える(エラーに見られるように)。

ところで、慣習では、クラス名は大文字で始まり、変数/プロパティは小文字で始まりますが、逆の方法をとっているようです。

+0

私は私がやっていることは、これらの追加のプロパティは実行時例外を引き起こしている理由であるtakePhotoViewControllerにアップキャストしようとしていることに気づきました。私はこれがセグエを介して子ビューと「コミュニケーションする」方法であることを理解してくれました。しかし、今私はこれが実際にどのようにできるのだろうと思っています。 – stan4th

+0

コードは問題ありません。あなたのストーリーボードに問題があると思います。リンク先のビューコントローラを見つけます。それを選択し、IDインスペクタで、クラスが正しいサブクラスに設定されていることを確認します。 – jrturton

0

デフォルトでは、destinationViewControllerがUIViewControllerを返すので、viewControllerをキャストする必要があります。

takePhotoViewController *takePhotoC = (takePhotoViewController *)[segue destinationViewController]; 
+0

これはコンパイルの警告に役立ちますが、ランタイムエラーに関する質問です。 destinationViewControllerは、宛先のクラスが何であれ、UIViewControllerまたはサブクラスになるものを返します。 – jrturton

関連する問題