В большинстве случаев, если вы хотите использовать отдельный делегат, вам не нужно больше информации, чем то, что передается делегату (параметры метода). Однако, если вы не хотите использовать свой MainViewController в качестве делегата для вашего UITextField, вы можете инициализировать TextFieldDelegate в экземпляре MainViewController и передать ему экземпляр 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' в СОД, и вы должны быть в состоянии ссылаться на свойства MainViewController из экземпляра TextFieldDelegate. Также можно инициировать его в другом месте, пока вы отправляете экземпляр MainViewController в экземпляр TextFieldDelegate.
Редактировать: woups забыли несколько '' '