2010-04-11 6 views
3

J'ai un UIView avec un sélecteur de date que je voudrais afficher dans une feuille d'action. J'utilise le code suivant:Comment afficher une vue personnalisée dans UIActionSheet?

-(IBAction) button_click:(id)sender{ 
//UIActionSheet *sheet = [[UIActionSheet alloc] initWithTitle:@"the title" delegate:nil cancelButtonTitle:@"Cancel" destructiveButtonTitle:@"Destructive" otherButtonTitles:@"other", nil]; 

UIActionSheet *sheet = [[UIActionSheet alloc] init]; 
ActionSheetController *actionSheet = [[ActionSheetController alloc] initWithNibName:@"ActionSheetView" bundle:nil];  
[sheet addSubview:actionSheet.view]; 

[sheet showInView:self.view]; 
} 

Ce que je reçois est un peu de la partie supérieure de la nouvelle vue à venir du fond et c'est tout. Si je commente les deux lignes du code du milieu et décommentez la partie supérieure pour afficher une feuille d'action régulière, cela fonctionne bien. Des idées sur ce que je pourrais faire de mal?

+0

La classe ActionSheetController vous appartient-elle? pourriez-vous partager le code? –

Répondre

0

J'ai découvert le behavoir se produit parce que je ne l'ai pas utilisé le constructeur UIActionSheet correctement. Les boutons et le titre doivent être inclus:

UIActionSheet *menu = [[UIActionSheet alloc] initWithTitle:@"Date Picker" delegate:self cancelButtonTitle:nil destructiveButtonTitle:nil otherButtonTitles:nil]; 
0

Je ne crois pas que vous pouvez spécifier des vues personnalisées dans une feuille UIActionSheet. Ma compréhension est que vous ne pouvez afficher qu'un titre et 1 ou plusieurs boutons. Ci-dessous la description de UIActionSheet dans la documentation d'Apple:

Utilisez la classe UIActionSheet pour présenter à l'utilisateur un ensemble d'alternatives pour savoir comment procéder à une tâche donnée. Vous pouvez également utiliser des fiches d'action pour inviter l'utilisateur à confirmer une action potentiellement dangereuse. La feuille d'action contient un titre optionnel et un ou plusieurs boutons, chacun correspondant à une action à effectuer.

UIActionSheet Class Reference

+0

Si vous jetez un oeil à ce post http://stackoverflow.com/questions/2608239/how-to-get-tabs-like-zipcar-app/2608297#2608297, j'ai un lien vers l'application zipcar, qui semble à l'aide d'une feuille d'action personnalisée. – 4thSpace

+4

Techniquement, ce que vous essayez de faire pourrait être possible après tout UIActionSheet est juste un autre type d'UIView. Mon problème est que vous pouvez rencontrer des problèmes lorsque vous soumettez l'application à Apple car ils s'attendent à ce que UIActionSheet soit utilisé d'une manière très spécifique, comme décrit dans le HIG iPhone http://developer.apple.com/iphone/library/documentation /UserExperience/Conceptual/MobileHIG/ModalViews/ModalViews.html#//apple_ref/doc/uid/TP40006556-CH11-SW1 Avez-vous envisagé de créer une vue modale personnalisée au lieu d'essayer d'utiliser UIActionSheet? – lucasweb

+0

Le contrôleur de vue modale ne masquerait/désactiverait-il pas la barre de navigation? – 4thSpace

1

utilisation UIActionSheetDelegate et après que vous pouvez ajouter à ce délégué par exemple une image à bouton de alertsheet

- (void)willPresentActionSheet:(UIActionSheet *)actionSheet{ 

    UIImageView *sample = [[UIImageView alloc] initWithImage:[UIImage  
    imageNamed:@"Someimage.png"]]; 
    [actionSheet addSubView:sample]; 

} 
+1

Ce serait génial si c'est correct. Échoue avec: "Aucune interface @ visible pour 'UIActionSheet' déclare le sélecteur 'addSubView:'" – mpemburn

+3

juste en minuscule le v..its [actionSheet addSubview: exemple]; – user2277872

+0

Vous pourriez vouloir faire attention avec ceci. Apple peut ne pas l'aimer.De la documentation: "UIActionSheet n'est pas conçu pour être sous-classé, ** ni pour ajouter des vues à sa hiérarchie ** Si vous avez besoin de présenter une feuille avec plus de personnalisation que celle fournie par l'API UIActionSheet, vous pouvez créer votre propre et présent modalement avec presentViewController: animé: completion :. " –

Questions connexes