There is a way (or many ways) to do just about anything :)
however I suspect it will be far simpler in your example to set the string from the textField in viewController1 to a property or indeed some method you put there (in viewController2) like
-(void)prepareToPresentHereIsYourStringFromMyTextField:(NSString *)textFieldContent;
the reason this will be far simpler is that viewController1 will already have imported the header file for viewController2, so it will immediately 'see' this selector and be able to call it, and viewController1 will already have a pointer to viewController2 immediately before it is presented. It can be done the other way around like you asked, with viewController2 'fetching' or 'getting' this string from viewController1, but it would be a little more fiddly, viewController2 would need to know something about viewController1, whether it import the entire header or you implement a tiny protocol, and it will need to be given a pointer to viewController1 to call on..