如何在UIActionSheet中显示自定义视图?

时间:2010-04-11 04:31:06

标签: iphone cocoa-touch uiactionsheet

我有一个带有日期选择器的UIView,我想在一个操作表中显示。我正在使用以下代码:

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

我得到的是从底部出现的新视图的顶部部分,就是这样。如果我评论代码的两个中间行并取消注释顶部以显示常规操作表,它可以正常工作。我可能做错了什么想法?

4 个答案:

答案 0 :(得分:1)

使用UIActionSheetDelegate,然后您可以使用此委托添加例如图像到警报表的按钮

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

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

}

答案 1 :(得分:0)

我不相信您可以在UIActionSheet中指定自定义视图。我的理解是你只能显示一个标题和一个或多个按钮。以下是Apple文档中对UIActionSheet的描述:

  

使用UIActionSheet类向用户显示如何继续执行给定任务的一组备选方案。您还可以使用操作表提示用户确认可能存在危险的操作。操作表包含一个可选标题和一个或多个按钮,每个按钮对应一个要执行的操作。

UIActionSheet Class Reference

答案 2 :(得分:0)

我发现行为发生是因为我没有正确使用UIActionSheet构造函数。应包括按钮和标题:

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

答案 3 :(得分:0)

您可能想要查看我制作的UIActionSheet替代方案,它可以让您显示自定义内容视图而不会出现任何肮脏的黑客攻击:https://github.com/JonasGessner/JGActionSheet它还有一些优于UIActionSheet的优势!