2011-07-27 8 views
2

J'ai ce code pour obtenir NSStrings à partir d'un NSDictionary à partir d'un NSMutableArray mais le problème est qu'il ne s'affiche pas correctement. Voici le code:ActionSheet ne s'affiche pas correctement

UIActionSheet *playingSheet = [[UIActionSheet alloc] initWithTitle:@"Hi" delegate:self cancelButtonTitle:nil destructiveButtonTitle:nil otherButtonTitles:nil]; 
    for(NSDictionary *dict in accounts) { 
     NSString *name = [dict objectForKey:@"Name"]; 
     [playingSheet addButtonWithTitle:name]; 
    } 
    [playingSheet showInView:self.view]; 
    [playingSheet release]; 

Le problème est dans mon cas, self.view est une sous-vue d'un parentView et est chargé à partir d'un et n'est pas XIB plein écran. Donc le problème est que ma feuille d'action est comme la moitié de la largeur de l'écran de l'iPhone et qu'elle ne touche même pas le bas de l'écran. Dans mon cas, comment est-ce que je le corrigerais de manière à ce qu'il soit le plus visible (pour que les utilisateurs puissent le voir correctement), et la façon dont une feuille d'action régulière est censée regarder?

Merci!

Edit: Ce fut le correctif:

[playingSheet showInView:[UIApplication sharedApplication].keyWindow]; 

Répondre

3

Vous devez définir le cadre de la feuille d'action comme

[playingSheet setFrame:CGRectMake(0, theHeightYouWant, 320, yourDesiredHeight)]; 

« theHeightYouWant » est la hauteur à laquelle vous devez déplacer l'action feuille vers le haut/vers le bas pour le mettre dans la bonne position à l'écran . Vous pouvez changer cela par essais et erreurs. Par exemple, si votre self.view est dans la moitié inférieure de l'écran, "theHeightYouWant" sera négatif!

+0

Vous ne savez pas comment définir la hauteur de la feuille d'action si le nombre de boutons change à chaque fois. –

+1

Vous l'avez corrigé: [playSheet showInView: [UIApplication sharedApplication] .keyWindow]; –

+0

sympa ... Je ne savais pas de cette façon! De toute façon, vous pouvez faire varier "yourDesiredHeight" avec le nombre de boutons, dans lequel chaque bouton ajoute un montant spécifique à "yourDesiredHeight". De même avec "theHeightYouWant". – tipycalFlow

2

Selon la façon dont votre code est configuré, vous pouvez essayer d'utiliser self.parentViewController.view, self.view.window, self.view.superview, ou de toute une variété de choses. Vous devez fournir plus d'informations si vous souhaitez une réponse plus détaillée.

+0

Aucun de ces 3 travaux. Il lance cette erreur dans la console (SIGABRT): *** Terminaison de l'application due à l'exception non interceptée 'NSInternalInconsistencyException', raison: 'Paramètre invalide non satisfaisant: view! = Nil' Quelles autres choses devrais-je essayer? *** –

+0

Je ne sais pas parce que je ne sais pas comment votre application est configurée. – jtbandes