У меня есть модальное представление, в котором пользователь выбирает некоторые данные для добавления в таблицу. Когда пользователь нажимает кнопку сохранения, модальное представление должно исчезнуть и отправить необходимые данные обратно в контроллер представления, который представил модальное представление для дальнейшей обработки. Чтобы добиться этого, я настроил протокол. Метод протокола в исходном контроллере представления не вызывается. Мой код ниже, что я делаю не так?
Файл заголовка (контроллер модального вида):
@protocol AddTAFDataSource;
@interface AddTAFViewController : UIViewController <UIPickerViewDelegate, UIPickerViewDataSource> {
id<AddTAFDataSource> dataSource;
NSString *newICAOCode;
}
@property (nonatomic, assign) id<AddTAFDataSource> dataSource;
- (IBAction)saveButtonPressed;
@end
@protocol AddTAFDataSource <NSObject>
- (void)addNewTAF:(AddTAFViewController *)addTAFViewController icao:(NSString *)icaoCode;
@end
Файл реализации (контроллер модального вида):
#import "AddTAFViewController.h"
#import "TAFandMETARViewController.h"
@implementation AddTAFViewController
@synthesize dataSource;
...
- (IBAction)saveButtonPressed {
[self.dataSource addNewTAF: self icao: newICAOCode];
}
@end
Представление заголовочного файла контроллера представления:
#import "AddTAFViewController.h"
@interface TAFandMETARViewController : UITableViewController <AddTAFDataSource> {
}
@end
И, наконец, контроллер представления:
#import "AddTAFViewController.h"
...
- (void)insertNewObject:(id)sender {
AddTAFViewController *addTAFViewController = [[AddTAFViewController alloc] initWithNibName: @"AddTAF" bundle: [NSBundle mainBundle]];
addTAFViewController.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
[(AddTAFViewController *)self.view setDataSource: self];
[self presentModalViewController: addTAFViewController animated: YES];
addTAFViewController = nil;
[addTAFViewController release];
}
- (void)addNewTAF:(AddTAFViewController *)addTAFViewController icao:(NSString *)icaoCode {
newICAO = icaoCode;
[self dismissModalViewControllerAnimated: YES];
}
Напомню, что выше - (void) addNewTAF: метод, который не передается по сообщениям. Любая помощь / указатели в правильном направлении очень ценятся.