Xcode4を使用したiPad用のプロジェクトに取り組んでいます。
多くのUITextFieldを備えたメインビューコントローラーがあります。
TextFieldDelegateは、別のファイル内の別のクラスです。
TextFieldDelegateからメインビューコントローラーのプロパティ(たとえば、doubleに値を割り当てる)を参照するにはどうすればよいですか?
ありがとうございました。
Xcode4を使用したiPad用のプロジェクトに取り組んでいます。
多くのUITextFieldを備えたメインビューコントローラーがあります。
TextFieldDelegateは、別のファイル内の別のクラスです。
TextFieldDelegateからメインビューコントローラーのプロパティ(たとえば、doubleに値を割り当てる)を参照するにはどうすればよいですか?
ありがとうございました。
ほとんどの場合、別のデリゲートを使用する場合、デリゲートに渡される情報 (メソッドのパラメーター) 以外の情報は必要ありません。ただし、MainViewController を UITextField のデリゲートとして使用したくない場合は、MainViewController インスタンスで TextFieldDelegate を初期化し、それを MainViewController インスタンスに渡すことができます。
たとえば、次のようにすることができます。
#import "MainViewController.h"
@interface TextFieldDelegate<UITextFieldDelegate> {
MainViewController* mainViewController;
}
@property(nonatomic,retain) MainViewController* mainViewController;
-(id)initWithController:(MainViewController*)controller;
@end
@implementation TextFieldDelegate
@synthesize mainViewController;
-(id)initWithController:(MainViewController*)controller {
if(self = [super init]) {
//some stuff
self.mainViewController = controller;
}
return self;
}
@end
次に、MainViewController で:
TextFieldDelegate tfd = [[TextFieldDelegate alloc] initWithController:self];
TextFields のデリゲートを tfd に設定するだけで、TextFieldDelegate インスタンスから MainViewController プロパティを参照できるようになります。MainViewController インスタンスを TextFieldDelegate インスタンスに送信する限り、別の場所で開始することもできます。
編集:うわー、いくつかの「*」を忘れました