2012-02-17 9 views
2

...私は別の使用して、ストーリーボード(第二ビューをモーダルモードで表示される)に1つのビューコントローラからの移行ボタンを持っています。iOS5でストーリーボードを使用する場合、どのテキストデータを別のテキストフィールドに渡すのですか?私は1回目のためにストーリーボードを使用しています、と私は私がここで間違ってやっているかを把握カント

テキストフィールドの値をビュー1からビュー2に渡すために「準備」を使用しようとしていますが、動作していません。誰かが私がここで間違っていることを教えてもらえますか?

ビュー1:

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{ 

    if ([[segue identifier] isEqualToString:@"saveGame"]) { 

     statsViewController *svc = (statsViewController *)[segue destinationViewController]; 
     [svc setStatsTextField:gameTextField]; 
    } 
} 

私が私に教えてください明確にするために投稿することができ、他のコードがある場合。

(記録のためにエラーがない、ビュー2上のテキストフィールドだけで更新されません。)

+0

[非常に、広範かつ完全に説明されたチュートリアル](http://www.raywenderlich.com/5191/beginning-storyboards-in-ios-5-part-2)が好きかもしれません。 – tipycalFlow

答えて

2

ビューがロードされていないので、テキストフィールドは、おそらくその時点でゼロです。

if (svc.view) 
    svc.textfield.text = @"Hello"; 

ビューのプロパティにアクセスするビューコントローラを強制されていない場合は、ビューをロードするために:if文でコードをラップすることにより、あなたは、この(!そのとにかく起こることを約あるためそう何の問題)を強制することはできませんすでに存在する。

文字列の代わりにテキストフィールドオブジェクト全体をテキストプロパティに渡しているように思えます。それは良い考えのようには思えません。上記の私の例に似ているはずです。

+0

Bingo-設定svc.textField.text = currentVCTextField.text場合は()でそれをラップした後、それが完全に働いたおかげ! – Nathan

3

あなただけの別の1内のプロパティに1つのビューコントローラ内のテキストフィールドを割り当てることはできません。これは、実際には2番目のビューコントローラのビューにあるテキストフィールドでは何も行いません。代わりに、テキストフィールドのtextプロパティに値を割り当てる必要があります。 (テキストフィールドの更新は、あなたのビューコントローラやモデル内の変数で更新された値を格納しなければならない時はいつでも。あなたのアプリのデータを格納するためのビューを使用してはならないので、理想的には、この値は、別のテキストフィールドから直接来るべきではありません。)

また、宛先ビューコントローラのビューがまだロードされていないため、このコードが実行された時点ではまだstatsTextFieldは存在しません。あなたは(ところで大文字で始めるべきクラス名)、その後viewDidLoadでテキストフィールドの値を割り当てるstatsViewControllerで別の文字列プロパティを宣言する必要があります。

+0

+1、それは更新しない理由を、実際の理由は、destinationViewController' 'を使用することです。もちろん、多くの解決策が可能です。 – tipycalFlow

+0

ビュープロパティにアクセスしてビューを強制的に読み込むことができることがわかるまで(私はここのどこかで)文字列プロパティを行いました。あなたはその方法の欠点を見ることができますか? – jrturton

+1

まあ、このように読み込むようにビューを強制することは、きれいなコードを作ることにはならないと思います。コードはそれ以上のことを行い、その目的を明確にするためにコメントが必要です。とにかく、データの格納には(テキストフィールドなどの)ビューを使用しないでください(メモリ警告が来たときにビューをアンロードできることに注意してください)ので、とにかく余分なプロパティが必要です。さらに、外部から別のView Controllerのテキストフィールドにアクセスすると、カプセル化の原則が破られるとも言えます。ビューコントローラ自体は、独自のビューを管理する必要があります。 –

関連する問題

 関連する問題