views:

1313

answers:

2

I have a UIView with a date picker that I'd like to display in an action sheet. I'm using the following code:

-(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];
}

What I get is a little bit of the top part of the new view coming up from the bottom and that's it. If I comment the two middle lines of code and uncomment the top part to display a regular action sheet, it works fine. Any ideas what I might be doing wrong?

A: 

I do not believe you can specify Custom Views in a UIActionSheet. My understanding is that you can only display a title and 1 or more buttons. Below is the description of UIActionSheet in the Apple documentation:

Use the UIActionSheet class to present the user with a set of alternatives for how to proceed with a given task. You can also use action sheets to prompt the user to confirm a potentially dangerous action. The action sheet contains an optional title and one or more buttons, each of which corresponds to an action to take.

UIActionSheet Class Reference

lucasweb
If you take a look at this post http://stackoverflow.com/questions/2608239/how-to-get-tabs-like-zipcar-app/2608297#2608297, I have a link to the zipcar app, which seems to using a custom action sheet.
4thSpace
Technically what you are trying to do could be possible after all UIActionSheet is just another type of UIView. My concern is that it you may run into problems when you submit the application to Apple as they expect UIActionSheet to be used in a very specific way as described in the iPhone HIG http://developer.apple.com/iphone/library/documentation/UserExperience/Conceptual/MobileHIG/ModalViews/ModalViews.html#//apple_ref/doc/uid/TP40006556-CH11-SW1 Have you considered creating a custom modal view instead of trying to use UIActionSheet?
lucasweb
Wouldn't modal view controller hide/disable the navigation bar?
4thSpace
Yes but so does UIActionSheet. The navigation bar is placed behind a semi-transparent overlay. Why would you want access to the navigation bar when displaying a UIActionSheet? It is designed specifically to force the user to select an action or dismiss the view.What are you trying to achieve with the UIActionSheet that requires a custom view embedded in it? If I had more details I might be able to give a more detailed response.
lucasweb
@lucasweb: take a look at my first comment above about the zipcar app. That's what I'm trying to do.
4thSpace
A: 

I've discovered the behavoir occurs because I haven't used the UIActionSheet constructor properly. The buttons and title should be included:

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