2011-01-14 12 views
0

プロトコルとデリゲートを使用して、あるviewControllerから別のviewControllerに配列を送信しようとしています。私はビューコントローラBのデリゲートを宣言し、ビューコントローラAで次のコードを使用してAからBへメッセージを送信しました。プロトコルのメソッドはdidReceiveMessageです。残念ながら、メッセージは到着しません。添付デリゲートを使用するViewController間のメッセージ

のViewController A

- (IBAction) graphPressed:(UIButton *)sender { 

GraphingViewController *gvc=[[GraphingViewController alloc] initWithNibName:nil bundle:nil]; 
[self presentModalViewController:gvc animated:YES]; 
[gvc release]; 

[delegate didReceiveMessage:brain.internalExpression]; 

} 

とviewcontrollerB

- (IBAction) ViewdidLoad { 
CalculatorViewController *cvc =[[CalculatorViewController alloc] init]; 
cvc.delegate=self; 
[cvc release]; 
} 

- (void) didReceiveMessage:(NSMutableArray *)expression { 

NSLog(@"message received from CalculatorAppDelegate"); 
} 

からのコードからコードである任意の提案を大幅に理解されるであろう。

答えて

0

2番目のサンプルで何をやっているのですか?オブジェクトを作成し、デリゲートプロパティを割り当ててから解放しました。どうして?

0

あなたのアプリケーションのコードの場合は、おそらくViewDidLoadメソッドの終わりにcvcを公開している可能性があります。

initはそれが1のカウントを保持与えるだろう、とリリースはまた、コードは後方一種のようです0

に戻ってそれを取ると、あなたはビューBのためのデリゲートとしてビューAを設定したい場合は、あなたはビューAでそれを行うでしょう。

私がコードから見ていない代理人を使用するより複雑な理由がない限り、私は本当にそれを送信する必要がある場合は、メッセージ。

+0

返信いただきありがとうございます。ポインタを子供の周りに保持する方法に関する提案。子どもからビューAをサブクラス化すると、必要な情報が失われます。 – jack

+0

親コントローラにインスタンス変数を作成し、子ビューを割り当てます。それを割り当てたときにはそれを保持し、完了したら解放してください。 – criscokid

0

他の人が投稿したように、作成したCalculator VCを取り除くだけです。私は@propertyを2番目のVCに追加し、それを使って電卓へのポインタを保存することをお勧めします。 retainプロパティである必要があります。その後、そのプロパティのデリゲートをselfに設定します。

また、デリゲート値にはassignプロパティを使用し、可能であればプロパティの構文(self.delegate)を使用するようにしてください。

これは実際に(IBなどで作られているものの接続、ヘッダファイル)試してみて、あなたのコードの多くをアップ投稿問題を解決していませんので、もし絶対により、ここにあり上行くことができ

編集:レコードの場合、方法は-(void)ViewDidLoadではなく-(void)viewDidLoadであるため、問題の原因となる可能性があります。

0

あなたがanother.Wellに1つのビューコントローラから配列を渡すしようとしている言ったように私はこのway.Hereで使用がmyArrayがあなたのGraphingViewControllerの配列である、あなただけの必要なコード

- (IBAction) graphPressed:(UIButton *)sender { 

GraphingViewController *gvc=[[GraphingViewController alloc] initWithNibName:nil bundle:nil]; 
gvc.myArray=infoArray; 
[self presentModalViewController:gvc animated:YES]; 
[gvc release]; 
} 

ですこの配列のプロパティをretain属性で作成するには、単に

@property(nonatomic,retain)NSMutableArray *myArray; 

とする必要があります。また、同様に合成する必要があります。

関連する問題