Я пытаюсь отобразить модальное представление «Условия предоставления услуг» при запуске моего приложения, когда в настройках параметров указано, что пользователь не принял условия использования.
Итак, в моем appDelegate в ApplicationDidFinishLaunchingWithOptions у меня есть этот код:
if (TOSAcceptedPrefValue) { //has not been accepted
// Create the root view controller for the navigation controller
TermsOfServiceController *termsOfServiceController = [[TermsOfServiceController alloc]
initWithNibName:@"TermsOfServiceController" bundle:nil];
// Create the navigation controller and present it modally.
UINavigationController *navigationController = [[UINavigationController alloc]
initWithRootViewController:termsOfServiceController];
termsOfServiceController.delegate = self;
navigationController.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
[self presentModalViewController:navigationController animated:YES];
[navigationController release];
[TermsOfServiceController release];
NSLog(@"1");
}
Тем не менее, Xcode указывает, что termOfServiceController.delegate = self является «Присвоение« id »из несовместимого типа« MyAppAppDelegate * »».
Я думаю, что полностью реализую модальный протокол в своем заголовке AppDelegate:
@protocol TOSModalViewDelegate
- (void)didAcceptTermsOfService:(NSString *)message;
- (void)didRejectTermsOfService:(NSString *)message;
@end
@interface MyAppAppDelegate : NSObject <UIApplicationDelegate, TOSModalViewDelegate> ...
и в заголовке modalview:
@protocol ModalViewDelegate ;
@interface TermsOfServiceController : UIViewController {
id<ModalViewDelegate> delegate; ...
...
@property (nonatomic, assign) id<ModalViewDelegate> delegate;
и я синтезирую его в файле реализации modalview.
Согласно этому примеру , я переместил свой код в файле AppDelegate.m, после того как окно было создано, но все еще получил предупреждение от Xcode.
Предупреждение приводит к падению приложения с этой ошибкой:
2011-09-05 08: 34: 12.237 MyApp [4416: 207] TOSAcceptedPrefValue = 0
2011-09-05 08: 34: 13.732 MyApp [4416: 207] displayWelcomeScreenPrefValue = 0
2011-09-05 08: 34: 42.889 MyApp [4416: 207] - [MyAppAppDelegate presentModalViewController: animated:]: нераспознанный селектор, отправленный экземпляру 0x552b430
2011-09-05 08: 34: 42.892 MyApp [4416: 207] *** Завершение работы приложения из-за необработанного исключения 'NSInvalidArgumentException', причина: '- [MyAppAppDelegate presentModalViewController: animated:]: нераспознанный селектор, отправленный экземпляру 0x552b430'
Итак, мой вопрос: возможно ли отобразить модальное представление из приложения appdelegate и, если да, что я должен изменить, чтобы это произошло.
Спасибо за вашу помощь