2011-12-22 19 views
0

これはこれまでのところ私が得たものです。 mainview.m1つのビューから別のビューにデータを渡す(Storyboard、iOS)

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender(id)sender { 
secondView *secView = [segue destinationViewController] 
secView.ext = @".com"; 
} 

secondView.h

@interface secondView : UIViewController { 
NSString *ext; 
} 
@proper (nonatomic, retain) NSString *ext; 
@end 

secondView.m

-(void)viewDidLoad { 
NSString *url = [@"www.google" stringByAppendingFormat:ext] 
} 

そして、その私が間違って何をやっている... extがnullであるというエラーを返しますか?

答えて

1

代わりに内線をプロパティに変えようとしましたか?私の理解では、「ドット」表記は、本質的に

[secView setExt:@".com"] 

にあなたのコードを回すように

@interface secondView : UIViewController 

@property (nonatomic, copy) NSString *ext; 

@end 

にSecondView.hを回していると、あなたの.mファイル

でそれを@synthesizeすることを忘れないでください
+0

私は実際にそれらの行を持っていました。私はここにそれらを入力するのを忘れました、私を編集させてください! – Cloaky

1

は、以下のことを確認します。

  1. @synthesize ext;がSecondView.m
  2. であることを確認します
  3. ストーリーボードで、セグを正しくリンクしましたか?
  4. Stodyboardでは、SecondViewのクラスとして定義されたSecondViewをrepresetnsするviewControllerはありますか?
  5. prepareForSegue:senderメソッドでSecondViewを呼び出していることを確認してください(つまり、SecondViewはコード内でpushViewController:animatedによって呼び出されません)。
1

行にブレークポイントを置く:

secView.ext = @".com"; 

ext IVARが適切に割り当て後に設定されていることを確認してください。そうでない場合は、ext@synthesizeディレクティブ内の別のivarをアクセサーが使用しているか、ivarを正しく設定していないセッター-setExt:を指定している可能性があります。

extの場合、割り当て後に正しく設定されている場合は、おそらくsecondViewの2つの異なるインスタンスがあります。これは、人々が.xibファイルを使用したときによく起こっていました。コード内に1つのビューコントローラを作成し、.xibファイルに同じクラスの別のインスタンスを作成することでした。私はあなたがsecViewをセグーから真っ直ぐにしているので、それがここに当てはまるとは期待しませんでしたが、それについて考える価値があります。

+0

私は問題を見つけました..私はメインビューからタブバーコントローラを指していて、Tab1(セカンドビューではない)を指していました。これはdestinationViewControllerが何か他のものを返す原因となっていました! – Cloaky

+0

これは、あなたが期待しているタイプのdestinationControllerに対する解決策だと思います。これはあなたが正しいタイプをキャスティングしていなかったことを知らせるでしょう。 – Oli

1

ビュー1とビュー2の2つのビューがあります。

  • はVIEW2の
  • view1.hのinitオブジェクトにview2.hファイルを追加し、その変数を設定します。
関連する問題