Comment afficher un popover par programmation à partir d'un uibutton qui est également créé par programmation (ne pas utiliser le constructeur d'interface)

J'ai un bouton que j'ai créé par programmation à l'intérieur d'une-vue-contrôleur. Une fois que le bouton est pressé, je veux qu'il à utiliser une méthode pour créer la liste par programmation.

Le bouton qui est créé dans le ViewDidLoad de mon point de vue contrôleur.m

 UIView *moreFundInfoView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 540, 620)];
[self.view addSubview:moreFundInfoView];
[moreFundInfoView setBackgroundColor:[UIColor RMBColor:@"b"]];

btnContact = [UIButton buttonWithType:(UIButtonTypeRoundedRect)];


[btnContact setFrame:CGRectMake(390, 575, contactButton.width, contactButton.height)];
 btnContact.hidden = NO;
[btnContact setTitle:@"Contact" forState:(UIControlStateNormal)];
[moreFundInfoView addSubview:btnContact];

[btnContact addTarget:self action:@selector(showContactDetails:) forControlEvents:UIControlEventTouchUpInside];

Puis j'ai la méthode que j'utilise lorsque le bouton est enfoncé.

-(void) showContactDetails: (id) sender
{
UIViewController *popoverContent = [[UIViewController alloc]init];

UIView *popoverView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 200, 300)];

[popoverView setBackgroundColor:[UIColor RMBColor:@"b"]];

popoverContent.view = popoverView;

popoverContent.contentSizeForViewInPopover = CGSizeMake(200, 300);

UIPopoverController *contactPopover =[[UIPopoverController alloc] initWithContentViewController:popoverContent];

[contactPopover presentPopoverFromRect:btnContact.frame inView:self.view permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES ];

[contactPopover setDelegate:self];

}

Ce qui me manque ici? Cause il s'exécute correctement, mais dès que je clique sur le bouton de l'application se bloque. Je pense que c'est un délégué problème, mais je ne suis pas sûr. Tout conseil serait apprécié.

source d'informationauteur Berns