I would like to create this kind of menu, of course with other menu buttons. Is there any default viewcontroller representing it, or do I have to get images and create this by myself.
-
3The title and popularity of this question is much better than the duplicate. It would be nice to have this question reopened so that updated answers could be added. – Suragch Oct 07 '15 at 11:58
-
2Vote to reopen please. – Stunner Dec 03 '15 at 12:42
-
@Suragch you are right. it is more helpful and understandable than other links – Soorej Babu Jun 26 '16 at 05:09
4 Answers
You need to use a UIActionSheet
.
First you need to add UIActionSheetDelegate
to your ViewController.h file.
Then you can reference an actionsheet with:
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];
Then you have to handle each of the calls.
- (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;
}
}
This has been deprecated for iOS 8.x https://developer.apple.com/documentation/uikit/uialertcontroller#//apple_ref/occ/cl/UIAlertController

- 37,241
- 25
- 195
- 267

- 12,161
- 4
- 48
- 69
-
5+! for being the only one to call it a `UIActionSheet` (as well as providing a good answer). – rmaddy Jun 20 '13 at 20:37
-
1I was literally working on my app as I saw the question! It comes from my code verbatim ;) – apollosoftware.org Jun 20 '13 at 20:47
-
1it is also working without adding UIActionSheetDelegate .. I want to know how... – Zar E Ahmer Aug 30 '14 at 07:12
-
2with iOS 8 there is a new UIAlertController https://developer.apple.com/library/ios/documentation/uikit/reference/UIAlertController_class/index.html#//apple_ref/occ/cl/UIAlertController – apollosoftware.org Sep 24 '14 at 15:17
-
re the Sep 24, '14 comment and edit, there is a new UIAlertController and UIActionSheet is deprecated as of iOS 8, but to say that it has "changed" is not fully accurate. It might be better to include the link to the class reference but say that it is deprecated rather than changed. – Tony Adams Mar 19 '15 at 20:12
-
NOTE: `[popup showInView:[UIApplication sharedApplication].keyWindow];` does not work alot of the time on iPad apps, show it in your current UIView instead. – Albert Renshaw Jul 16 '15 at 22:02
-
@AlbertRenshaw you are correct. You can use self or comparable and show in current view. – apollosoftware.org Jul 17 '15 at 04:48
Take a look at the UIActionSheet documentation.
NSString *actionSheetTitle = @"Action Sheet Demo"; //Action Sheet Title
NSString *destructiveTitle = @"Destructive Button"; //Action Sheet Button Titles
NSString *other1 = @"Other Button 1";
NSString *other2 = @"Other Button 2";
NSString *other3 = @"Other Button 3";
NSString *cancelTitle = @"Cancel Button";
UIActionSheet *actionSheet = [[UIActionSheet alloc]
initWithTitle:actionSheetTitle
delegate:self
cancelButtonTitle:cancelTitle
destructiveButtonTitle:destructiveTitle
otherButtonTitles:other1, other2, other3, nil];
[actionSheet showInView:self.view];

- 4,927
- 12
- 49
- 54
It is called an UIActionSheet: You create one like so:
NSString *actionSheetTitle = @"Action Sheet Demo"; //Action Sheet Title
NSString *destructiveTitle = @"Destructive Button"; //Action Sheet Button Titles
NSString *other1 = @"Other Button 1";
NSString *other2 = @"Other Button 2";
NSString *other3 = @"Other Button 3";
NSString *cancelTitle = @"Cancel Button";
UIActionSheet *actionSheet = [[UIActionSheet alloc]
initWithTitle:actionSheetTitle
delegate:self
cancelButtonTitle:cancelTitle
destructiveButtonTitle:destructiveTitle
otherButtonTitles:other1, other2, other3, nil];
[actionSheet showInView:self.view];
Implement the UISctionSheetDelegate to respond to button action.
Take a look at this tutorial for more info: http://mobile.tutsplus.com/tutorials/iphone/uiactionsheet_uiactionsheetdelegate (Code is from this tutorial)

- 1,930
- 1
- 21
- 43
What you are looking for is called an actionsheet. Read more about it here http://developer.apple.com/library/ios/#DOCUMENTATION/UIKit/Reference/UIActionSheet_Class/Reference/Reference.html