Мне нужно представить контроллер модального вида и получить уведомление, когда он уволен или уведомлен о том, что мне нужно его закрыть, глядя здесь. Я все еще в замешательстве:
http://developer.apple.com/library/ios/#featuredarticles/ViewControllerPGforiPhoneOS/ModalViewControllers/ModalViewControllers.html#//apple_ref/doc/uid/TP40007457-CH111-SW14
Iу меня есть mainViewController и контроллер myModalView, и у меня есть следующий код, который должен быть реализован, но я не уверен, где - сначала протокольный делегат:
@protocol DataSyncDelegate <NSObject>
-(void) doneWithSync;
@end
, в какой controller.h это входит?Я предполагаю, что мой modalViewController.h
секунда - моя реализация:
-(void) doneWithSync {
[self dismissModalViewControllerAnimated:YES];
}
, в какой controller.m это входит?Я предполагаю, что мой mainViewController.m
У меня также есть свойства делегата, которые необходимо изменить:
id delegate;
@property (nonatomic, retain) id delegate;
, в какой controller.m это нужно добавить?Я предполагаю, что мой modalViewController.h
и вот как я представляю modalViewController из моего MainViewController:
DataSyncViewController *dataSyncViewController = [[DataSyncViewController alloc] initWithOptions:FALSE];
dataSyncViewController.delegate = self;
[self presentModalViewController:dataSyncViewController animated:NO];
[dataSyncViewController release];
На данный момент это дает мне следующую ошибку:
-[DataSyncViewController setDelegate:]: unrecognized selector sent to instance 0x5952e20
Что мне здесь не хватает?
РЕДАКТИРОВАТЬ - ЗДЕСЬ МОЙ МОДАЛЬНЫЙ КОНТРОЛЛЕР ВИДА .H
#import <UIKit/UIKit.h>
@protocol DataSyncDelegate
-(void) doneWithSync;
@end
@interface DataSyncViewController : UIViewController {
id <DataSyncDelegate> delegate;
}
@property (nonatomic, retain) id <DataSyncDelegate> delegate;
@end
РЕДАКТИРОВАТЬ - ГЛАВНЫЙ КОНТРОЛЛЕР ВИДА .H AND .M
#import <UIKit/UIKit.h>
#import <CoreData/CoreData.h>
#import "DataSyncViewController.h"
@interface LoginViewController : UIViewController <DataSyncDelegate>{
}
@end
ЗДЕСЬ СОЗДАНИЕ МОДАЛА:
DataSyncViewController *dataSyncViewController = [[DataSyncViewController alloc] initWithOptions:FALSE];
dataSyncViewController.delegate = self;
[self presentModalViewController:dataSyncViewController animated:NO];
[dataSyncViewController release];
ЗДЕСЬ МОЕ РЕАЛИЗАЦИЯ ДЕЛЕГАТА:
-(void) doneWithSync {
[self dismissModalViewControllerAnimated:YES];
}
И теперь все выглядит правильно, чтобы подключиться в компиляторено я получаю следующую ошибку:
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[DataSyncViewController setDelegate:]: unrecognized selector sent to instance 0x59e4b40'