0

Xcode4を使用したiPad用のプロジェクトに取り組んでいます。

多くのUITextFieldを備えたメインビューコントローラーがあります。

TextFieldDelegateは、別のファイル内の別のクラスです。

TextFieldDelegateからメインビューコントローラーのプロパティ(たとえば、doubleに値を割り当てる)を参照するにはどうすればよいですか?

ありがとうございました。

4

1 に答える 1

1

ほとんどの場合、別のデリゲートを使用する場合、デリゲートに渡される情報 (メソッドのパラメーター) 以外の情報は必要ありません。ただし、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 インスタンスに送信する限り、別の場所で開始することもできます。

編集:うわー、いくつかの「*」を忘れました

于 2012-06-25T12:38:30.333 に答える