You can create a protocol for this commonly used view controller and implement this protocol by the calling view controllers :
@protocol TextFieldViewControllerDelegate : NSObject {
- (void)contentCollected;
}
In your text field (the common) view controller define a delegate property:
@property (nonatomic, strong) id<TextFieldViewControllerDelegate> delegate;
The calling view controller will set itself as the delegate and implement the needed method:
- (void) contentCollected:(NSString *)value
{
// Store the value where needed
}
In the common (textfield) view controller notify the delegate when needed :
- (void) collectContent
{
NSString *info = [textField text];
[textField resignFirstResponder];
[_delegate contentCollected:info];
[[self navigationController] popToRootViewControllerAnimated:YES];
_delegate = nil;
}
This way your common view controller does not need to know which view controller called it. Using the delegate the calling view controller will be notified.