在iphone上,此代码显示取消按钮:
- (IBAction)buttonPressed
{
UIActionSheet *actionSheet = [[UIActionSheet alloc]
initWithTitle:@"Are you sure?"
delegate:self
cancelButtonTitle:@"No way!"
destructiveButtonTitle:@"Yes, I'm sure!"
otherButtonTitles:nil];
[actionSheet showInView:self.view];
[actionSheet release];
}
但是在iPad上,只有破坏性按钮显示 有什么问题?
答案 0 :(得分:38)
这是UI design and guidlines的一部分。在“行动表”下,他们说:
不要包含取消按钮, 因为人们可以在外面拍打 popover以关闭操作表 没有选择其中一个 的替代品。
看起来像SDK hide the button for you on purpose。我不确定是否有解决方案,但也许您可以添加自己的按钮并将cancelButtonIndex
设置为匹配。或者您可以切换到UIAlertView
。
答案 1 :(得分:4)
在iOS 5中,这对我有用。
- (void)manualAddModel
{
UIActionSheet *popupQuery = [[UIActionSheet alloc] initWithTitle: @"Select Equipment Type"
delegate: self
cancelButtonTitle: @"Cancel"
destructiveButtonTitle: nil
otherButtonTitles: @"Add Boiler", @"Add Furnace", nil];
popupQuery.actionSheetStyle = UIActionSheetStyleDefault;
[popupQuery addButtonWithTitle:@"Cancel"];
[popupQuery showInView:self.view];
}
- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex
{
if (buttonIndex == 0)
{
NSLog(@"Add Boiler");
}
else if (buttonIndex == 1)
{
NSLog(@"Add Furnace");
}
else if (buttonIndex == 2)
{
NSLog(@"Cancel Button Clicked");
}
}
通常情况下,在操作表外部点击将在iPad中实现相同的目的。
答案 2 :(得分:2)
在iOS 4.2.1中,您可以像普通按钮一样手动添加自己的“取消”按钮:
[actionSheet addButtonWithTitle:@"Cancel"];
然后设置:
actionSheet.cancelButtonIndex = <your index>;
您将无法获得红色取消按钮,但根据您的UIActionSheetStyle
设置,您将获得蓝色或黑色取消按钮。无论如何,它与普通按钮非常清晰,并且可以正确取消。
请注意,在我的情况下,我正在弹出窗口控制器中显示一个操作表,您的结果可能会因其他方案而异。
答案 3 :(得分:1)
我能够通过设置actionSheetStyle来解决这个问题:
actionSheet.actionSheetStyle = UIActionSheetStyleBlackOpaque;
UIActionSheetStyleBlackTranslucent也有效。我正在从模态视图控制器显示动作表,我认为这在技术上并不像指南所说的那样是“popovercontroller”但是当它出现在模态视图顶部时,没有看到动作表上的“取消”按钮看起来不正确。所有用户看到的都是一个可怕的红色按钮,没有可见的选择。
也许我可以将模态视图控制器更改为popovercontroller但是它不会是模态的,它需要它。
- 更新 -
它持续很有趣但在iOS 4.2中不再适用 我转而使用UIAlertView而不是UIActionSheet 我不再得到一个很酷的红色按钮,但它完成了工作。
答案 4 :(得分:1)
当我尝试在View中显示另一个模态视图下的ActionSheet时遇到了同样的问题,例如这种观点是看不见的。虽然View不是nil看起来像框架中的深层,但是当它没有显示时就意味着它。
我通过设置不同的UIModalPresentationStyle modalPresentationStyle
属性解决了这个问题,因此视图变得可见。
view.modalPresentationStyle = UIModalPresentationFormSheet;
答案 5 :(得分:1)
根据iOS标准,在iPad中显示时,UIActionSheet中不显示“取消”按钮,因为只需点击ActionSheet区域外的任何位置即可取消(隐藏)UIActionSheet。如果iPhone UIActionSheet将包含取消按钮。
请参阅此链接以获取更多信息UIActionSheet Cancel button in iPad