2013-11-30 3 views
0

ViewContoller (SecondViewController), которая не видна показывает UIAlertView так:UIAlertView делегат к другому классу

ViewController *viewc = [[ViewController alloc]init]; 
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Fehler" message:@"Message" delegate:viewc.delegate cancelButtonTitle:@"Ok" otherButtonTitles: nil] ; 

[alert performSelectorOnMainThread:@selector(show) withObject:nil waitUntilDone:NO]; 

В ViewController.h делегата definded так:

@property (strong, nonatomic) id<UIAlertViewDelegate> delegate;

Но методы делегата не вызываются в ViewController.h. Что я делаю не так?

+0

@Greg это интегрированный метод '[alertView show]' – iCode

+0

Да, конечно, я этого не заметил. Вы просто выделили viewc и попытаетесь обработать UIAlertViewDelegate? Я считаю, что вы должны представить viewc, если хотите обработать делегат. – Greg

ответ

1

Вам не нужно определять делегат для второго viewController, а затем назначать делегата делегату UIAlertView. Вместо этого установите делегат из UIAlertView ко второму viewController.

ViewController *viewc = [[ViewController alloc]init]; 
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Fehler" message:@"Message" delegate:viewc cancelButtonTitle:@"Ok" otherButtonTitles: nil] ; 

[alert performSelectorOnMainThread:@selector(show) withObject:nil waitUntilDone:NO]; 

Однако, вы должны убедиться, что второй ViewController соответствует протоколу UIAlertViewDelegate и реализует необходимые методы.

Ex.

@interface SecondViewController : UIViewController <UIAlertViewDelegate> 

@end 

Кроме того, удалите этот объект из второго ViewController как это не требуется @property (strong, nonatomic) id<UIAlertViewDelegate> delegate;.

+0

Методы по-прежнему не срабатывают. – iCode

+0

Соответствует ли второй viewController протоколу UIAlertViewDelegate? – Jonathan

+0

Да, оба ViewControllers делают. – iCode

Смежные вопросы