私はiPhoneプログラミングの初心者です。あるビューコントローラから別のビューコントローラにメッセージを送信しようとしています。考え方は、viewControllerAがユーザーからの情報を取得し、それをviewControllerBに送信することです。 viewControllerBはラベルに情報を表示することになっています。Obj-Cクラス間のメッセージの送信
viewControllerA.h
#import <UIKit/UIKit.h>
@interface viewControllerA : UIViewController
{
int num;
}
-(IBAction)do;
@end
viewControllerA.m
#import "viewControllerA.h"
#import "viewControllerB.h"
@implementation viewControllerA
- (IBAction)do {
//initializing int for example
num = 2;
viewControllerB *viewB = [[viewControllerB alloc] init];
[viewB display:num];
[viewB release];
//viewA is presented as a ModalViewController, so it dismisses itself to return to the
//original view, i know it is not efficient
[self dismissModalViewControllerAnimated:YES];
}
- (void)dealloc {
[super dealloc];
}
@end
viewControllerB.h
viewControllerB.m
#import "viewControllerB.h"
#import "viewControllerA.h"
@implementation viewControllerB
- (IBAction)openA {
//presents viewControllerA when a button is pressed
viewControllerA *viewA = [[viewControllerA alloc] init];
[self presentModalViewController:viewA animated:YES];
}
- (void)display:(NSInteger)myNum {
NSLog(@"YES");
[label setText:[NSString stringWithFormat:@"%d", myNum]];
}
@end
YESは正常にログに記録されますが、ラベルのテキストは変更されません。私は インターフェイスビルダのすべての接続が正しいことを確認しました。実際にはこの非常にラベルのテキストを変更する私のプログラムの他の(IBAction) メソッドがあり、これらのメソッドはすべて完全に動作します...
アイデア、みんな?あなたは私に完全な解決策を与える必要はありません。あらゆる情報が役立ちます。ありがとう。
viewControllerB *viewB = [[viewControllerB alloc] init];
は、新しいviewControllerB
をインスタンス化していると
IBActionメソッドが単一の '(id)sender'パラメータを取ることを伝えてください。 – Abizern
ps。本当にあなたの質問ではなく、メモリリークを注意してください。 'alloc'(または' copy'、 'new'、' retain')の後には 'release'または' autorelease'が続きます。 – mvds
@Abizern彼らは必須ではありません。 http://developer.apple.com/library/ios/documentation/UIKit/Reference/UIApplication_Class/Reference/Reference.html#//apple_ref/doc/uid/TP40006728-CH3-SW31で指定されているフォームに一致します。 –