Ради полноты, если кто-то еще наткнется на это (это помогло мне) ...
Интерфейс контроллера модального представления должен определить переменную для хранения делегата:
@protocol ReminderPhotoViewDelegate <NSObject>
@required
- (void)willShow:(id)theView;
@end
@interface ReminderPhotoViewController : UIViewController {
id<ReminderPhotoViewDelegate> delegate;
UIImageView *reminderImage;
UILabel *reminderLabel;
}
@property (assign) id<ReminderPhotoViewDelegate> delegate;
@property (nonatomic, retain) IBOutlet UIImageView *reminderImage;
@property (nonatomic, retain) IBOutlet UILabel *reminderLabel;
@end
В рамках реализации модального контроллера обязательно синтезируйте эти свойства:
@implementation ReminderPhotoViewController
@synthesize reminderImage, reminderLabel;
@synthesize delegate;
Каким бы ни был ваш "вызывающий" контроллер, он должен объявить поддержку этого протокола в своей собственной реализации:
#import "ReminderPhotoViewController.h"
@interface ReminderViewController : UIViewController <ReminderPhotoViewDelegate> {
}
Наконец, когда вы создаете экземпляр вашего модального контроллера, вам нужно установить вызывающий класс в качестве его делегата:
ReminderPhotoViewController *photo = [[ReminderPhotoViewController alloc] init];
[photo setDelegate:self];
Это более полный набор объявлений и кода - это именно то, что показывает ответ, только с большим количеством вспомогательного кода.
Затем, как отмечено выше, ваш вызывающий контроллер добавляет метод из протокола:
- (void)willShow:(ReminderPhotoViewController *)theView {
theView.reminderImage.image = selectedImage;
theView.reminderLabel.text = selectedText;
}