Je souhaite créer un menu contextuel similaire à celui de l'application de messagerie lorsque vous souhaitez répondre à un message. J'ai vu cela dans plus d'une application, donc je n'étais pas sûr s'il y avait quelque chose intégré dans le cadre ou un exemple de code là-bas.Création d'un menu contextuel iPhone similaire à Mail App Menu
Répondre
Consultez l'exemple UICatalog sur le site Web d'Apple. La section "Alertes" contient des exemples d'utilisation de UIActionSheet pour accomplir ce que vous essayez de faire.
Il est un UIAlertController
sur iOS 8+ et un UIActionSheet
sur les versions antérieures.
Vous devez utiliser une feuille UIAction.
Vous devez d'abord ajouter UIActionSheetDelegate à votre fichier ViewController .h.
Ensuite, vous pouvez faire référence à un actionsheet avec:
UIActionSheet *popup = [[UIActionSheet alloc] initWithTitle:@"Select Sharing option:" delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:nil otherButtonTitles:
@"Share on Facebook",
@"Share on Twitter",
@"Share via E-mail",
@"Save to Camera Roll",
@"Rate this App",
nil];
popup.tag = 1;
[popup showInView:self.view];
Ensuite, vous devez gérer chacun des appels.
- (void)actionSheet:(UIActionSheet *)popup clickedButtonAtIndex:(NSInteger)buttonIndex {
switch (popup.tag) {
case 1: {
switch (buttonIndex) {
case 0:
[self FBShare];
break;
case 1:
[self TwitterShare];
break;
case 2:
[self emailContent];
break;
case 3:
[self saveContent];
break;
case 4:
[self rateAppYes];
break;
default:
break;
}
break;
}
default:
break;
}
}
Ceci a été abandonné à partir d'iOS 8.x.
Pour tous ceux qui est à la recherche d'une solution à Swift:
Adopt
UIActionSheetDelegate
protocoleCréer et montrer la ActinSheet:
let sheet: UIActionSheet = UIActionSheet() sheet.addButtonWithTitle("button 1") sheet.addButtonWithTitle("button 2") sheet.addButtonWithTitle("button 3") sheet.addButtonWithTitle("Cancel") sheet.cancelButtonIndex = sheet.numberOfButtons - 1 sheet.delegate = self sheet.showInView(self.view)
Le déléguer functi sur:
func actionSheet(actionSheet: UIActionSheet!, clickedButtonAtIndex buttonIndex: Int){ switch buttonIndex{ case 0: NSLog("button1"); case 1: NSLog("button2"); case 2: NSLog("button3"); case actionSheet.cancelButtonIndex: NSLog("cancel"); break; default: NSLog("blub"); break; } }
Création d'une fiche d'action à Swift
code a été mis à jour pour Swift 3
Depuis iOS 8, UIAlertController
combiné avec UIAlertControllerStyle.ActionSheet
est utilisé . UIActionSheet
est obsolète.
Voici le code pour produire la feuille d'action dans l'image ci-dessus:
class ViewController: UIViewController {
@IBOutlet weak var showActionSheetButton: UIButton!
@IBAction func showActionSheetButtonTapped(sender: UIButton) {
// Create the action sheet
let myActionSheet = UIAlertController(title: "Color", message: "What color would you like?", preferredStyle: UIAlertControllerStyle.actionSheet)
// blue action button
let blueAction = UIAlertAction(title: "Blue", style: UIAlertActionStyle.default) { (action) in
print("Blue action button tapped")
}
// red action button
let redAction = UIAlertAction(title: "Red", style: UIAlertActionStyle.default) { (action) in
print("Red action button tapped")
}
// yellow action button
let yellowAction = UIAlertAction(title: "Yellow", style: UIAlertActionStyle.default) { (action) in
print("Yellow action button tapped")
}
// cancel action button
let cancelAction = UIAlertAction(title: "Cancel", style: UIAlertActionStyle.cancel) { (action) in
print("Cancel action button tapped")
}
// add action buttons to action sheet
myActionSheet.addAction(blueAction)
myActionSheet.addAction(redAction)
myActionSheet.addAction(yellowAction)
myActionSheet.addAction(cancelAction)
// support iPads (popover view)
myActionSheet.popoverPresentationController?.sourceView = self.showActionSheetButton
myActionSheet.popoverPresentationController?.sourceRect = self.showActionSheetButton.bounds
// present the action sheet
self.present(myActionSheet, animated: true, completion: nil)
}
}
encore besoin d'aide? Regardez ce tutoriel vidéo. C'est comme ça que je l'ai appris.
- UIActionSheet example in Swift (Contrairement au nom, il ne fait utiliser la nouvelle feuille d'action
UIAlertController
plutôt queUIActionSheet
.)
Salut @Suragch, j'essaye votre code. Cela fonctionne pour moi sur iPad et iPod. Mais, le bouton Annuler n'apparaît pas sur l'iPad. Je ne sais pas pourquoi. Il montre dans l'iPod et je n'utilise pas de bouton. J'utilise l'image et j'y ajoute la fonction tap. Donc, mon code est alertController.popoverPresentationController? .sourceView = self.imgPlay et alertController.popoverPresentationController? .sourceRect = self.imgPlay.bounds. –
Cela fonctionne très bien, mais pouvons-nous personnaliser les boutons texte @Suragch –
Voici comment vous le feriez en Objective-C sur iOS 8+:
UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"Directions"
message:@"Select mode of transportation:"
preferredStyle:UIAlertControllerStyleActionSheet];
UIAlertAction *drivingAction = [UIAlertAction actionWithTitle:@"Driving" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
// this block runs when the driving option is selected
}];
UIAlertAction *walkingAction = [UIAlertAction actionWithTitle:@"Walking" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
// this block runs when the walking option is selected
}];
UIAlertAction *defaultAction = [UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleCancel handler:nil];
[alert addAction:drivingAction];
[alert addAction:walkingAction];
[alert addAction:defaultAction];
[self presentViewController:alert animated:YES completion:nil];
J'ai essayé d'ajouter ActionSheet sur mon point de vue. J'ai donc essayé de trouver une solution parfaite mais certaines réponses m'ont rendu confus. Parce que la plupart des questions sur la feuille d'action ont été écrites il y a si longtemps. De plus, elle n'a pas été mise à jour. Quoi qu'il en soit ... Je vais écrire l'ancienne version ActionSheet et la version mise à jour ActionSheet. J'espère que ma réponse est capable de rendre votre cerveau paisible.
---------- Version mise à jour ---------
UIAlertController * alertController = [UIAlertController alertControllerWithTitle:@"Action Sheet" message:@"writeMessageOrsetAsNil" preferredStyle:UIAlertControllerStyleActionSheet];
UIAlertAction* actionSheet01 = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault
handler:^(UIAlertAction * action) { NSLog(@"OK click");}];
UIAlertAction* actionSheet02 = [UIAlertAction actionWithTitle:@"No" style:UIAlertActionStyleDefault
handler:^(UIAlertAction * action) {NSLog(@"OK click");}];
UIAlertAction* actionSheet03 = [UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleCancel
handler:^(UIAlertAction * action) {
NSLog(@"Cancel click");}];
[browserAlertController addAction:actionSheet01];
[browserAlertController addAction:actionSheet02];
[browserAlertController addAction:actionSheet03];
[self presentViewController:browserAlertController animated:YES completion:nil];
------- ------ ancienne version
UIActionSheet *actionSheet= [[UIActionSheet alloc] initWithTitle:@"Select Sharing option:" delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:nil otherButtonTitles:@“OK”, @“NO”,@“Cancel”,
nil];
actionSheet.tag = 100;
[actionSheet showInView:self.view];
- (void)actionSheet:(UIActionSheet *)actionShee clickedButtonAtIndex:(NSInteger)buttonIndex {
if(actionSheet.tag == 100){
switch (buttonIndex) {
case 0:
[self doSomething];
break;
case 1:
[self doAnything];
break;
case 2:
[self doNothing];
break;
default:
break;
}
break;
}
}
- 1. Création d'un menu contextuel personnalisé
- 2. Comment ajouter un menu contextuel à NSOutlineView (ie menu contextuel)
- 3. Menu contextuel
- 4. Acrobat Menu contextuel
- 5. menu contextuel parent?
- 6. ToolStripButton avec menu contextuel?
- 7. Menu contextuel sous winforms
- 8. PyQt menu contextuel
- 9. Menu contextuel MFC "collant"
- 10. Menu contextuel de l'onglet QTabWidget
- 11. Menu contextuel pour SWF chargé
- 12. PyQt et le menu contextuel
- 13. Création d'un menu contextuel dans Qt pour QTableView
- 14. ajouter un élément de menu au menu contextuel par défaut
- 15. Tests d'automatisation de l'Ui menu contextuel
- 16. Vérifications de l'élément radio du menu contextuel
- 17. C# winforms menu contextuel événements problème
- 18. Paramètres désactivés dans le menu contextuel Flash
- 19. Désactiver le menu contextuel du système DataGridView
- 20. Plugin Eclipse - Extension de menu contextuel
- 21. Menu contextuel de la zone de liste
- 22. Barre d'outils DocumentViewer et menu contextuel
- 23. Menu contextuel des dossiers (Dossier uniquement)
- 24. Bits contextuels du menu contextuel Internet Explorer
- 25. Raccourci du menu contextuel Visual Studio
- 26. Option de menu contextuel du shell Windows
- 27. TortoiseHg sans commandes de menu contextuel
- 28. Menu contextuel du projet Explorateur de solutions
- 29. Menu contextuel par défaut pour RichTextEdit?
- 30. Comment vérifier un élément de menu contextuel?
meilleure ressource j'ai trouvé ici http://code.tutsplus.com/tutorials/uiactionsheet-and-uiactionsheetdelegate--mobile-11590 – Nepster