boscarol
boscarol

Reputation: 1941

Refer to a main view controller property by another class

I work on a project for iPad with Xcode 4.

I have a main view controller with many UITextField.

The TextFieldDelegate is a separate class in a separate file.

How can I refer, from TextFieldDelegate to a property (to a UITextField) of the main view controller (for example assign a value to a double)?

Thank you.

Upvotes: 0

Views: 265

Answers (1)

ameunier
ameunier

Reputation: 156

In most cases, if you want to use a separate delegate you should not need more information than what is passed to the delegate (the method's parameters). However, if you don't want to use your MainViewController as a delegate for your UITextField, you can initialize your TextFieldDelegate in your MainViewController instance and pass it the MainViewController instance.

For example you could have:

#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

Then in your MainViewController:

TextFieldDelegate tfd = [[TextFieldDelegate alloc] initWithController:self];

You just need to set the TextFields' delegate to tfd and you should be able to reference the MainViewController properties from the TextFieldDelegate instance. It's also possible to initiate it somewhere else, as long as you send the MainViewController instance to your TextFieldDelegate instance.

Edit: woups forgot a few '*'

Upvotes: 1

Related Questions