Стандартный способ сделать это - использовать делегата.
В ваш InputViewController добавьте новый протокол делегата и свойство для вашего делегата.
Затем в вашем CallerUIViewController реализуйте делегат. Затем, непосредственно перед тем, как вы отклоните модальный контроллер вида, вы можете перезвонить своему делегату.
Так что ваш InputViewController может выглядеть так:
@protocol InputViewControllerDelegate;
@interface InputViewControllerDelegate : UIViewController {
}
@property (nonatomic, assign) id <InputViewControllerDelegate> delegate;
@end
@protocol InputViewControllerDelegate
- (void)didFinishWithInputView:(NSString *)stringValue;
@end
Метод, который отклоняет модальное представление, будет выглядеть примерно так:
-(void)dismissSelf
{
[self.delegate didFinishWithInputView:@"MY STRING VALUE"];
[self dismissModalViewControllerAnimated:YES];
}
Тогда в вашем CallerUIViewController вы реализуете InputViewControllerDelegate и метод didFinishWithInputView.
Заголовок CallerUIViewController будет выглядеть примерно так:
@interface CallerUIViewController : UIViewController <InputViewControllerDelegate> {
}
и ваш метод didFinishWithInputView будет реализован примерно так:
- (void)didFinishWithInputView:(NSString *)stringValue
{
// This method will be called by the InputViewController just before it is dismissed
}
Непосредственно перед вашим подарком InputViewController вы должны установить делегата на себя.
-(void)showInputViewController
{
InputViewController *inputVC = [[InputViewController alloc] init];
inputVC.delegate = self;
[self presentModalViewController:inputVC animated:YES];
[inputVC release];
}