【问题标题】:How do I code a green button in UIActionSheet?如何在 UIActionSheet 中编写绿色按钮?
【发布时间】:2011-01-30 03:21:26
【问题描述】:
我正在使用代码:
{
randomstatus=0;
msg=[[NSString alloc]initWithFormat:@"Good job, do you want to continue?"];
UIActionSheet *actionSheet=[[UIActionSheet alloc]initWithTitle:msg delegate:self cancelButtonTitle:@"No" destructiveButtonTitle:@"Yes" otherButtonTitles:nil];
[actionSheet showInView:self.view];
[actionSheet release];
[msg release];
}
我不想更改代码,但我需要“破坏性按钮”为绿色而不是红色。这可能吗,还是我需要使用其他按钮?
【问题讨论】:
标签:
iphone
cocoa-touch
uikit
button
uiactionsheet
【解决方案1】:
没有改变按钮外观的“标准”方式。如果 Apple 更改 UIActionSheet 组件,您使用的任何方式本质上都将是 hack,并且可能会在未来中断。如果他们惹恼了 App-Store 之神,他们也可能会拒绝您的应用。
我认为实现这一点的最面向未来的方法是从头开始创建自己的操作表类,即不继承 UIActionSheet(因为这可能会在未来中断)。虽然这可能比一些 hack 需要更多的前期工作,但您将获得的额外灵活性将在未来派上用场。
这应该不会太难。您需要一个作为操作表背景的视图,您可以通过截取标准 UIActionSheet 和一些 photoshopping 来获得该视图。然后将您的自定义按钮添加为子视图。一点动画来调出视图,你就完成了。
我的目标是让你的类实现 UIActionSheet 所做的所有方法,以及触发 UIActionSHeetDelegate 期望的方法。这样,您就可以将它替换为您使用本机 UIActionSheet 的任何地方
【解决方案2】:
很遗憾,没有任何官方提供的自定义 UIActionSheet 按钮的方法。
但是,您可以访问 UIActionSheet 的子视图(这可能会在未来的 iPhone OS 更新中中断),或者添加一个带有覆盖原始破坏性操作按钮的按钮的新视图(再一次,这可能会中断)。
虽然与更改 UIActionSheet 上按钮的颜色没有直接关系,但之前的问题:iPhone Disabling UIActionSheet buttons 演示了一些可以将自定义视图添加到 UIActionSheet 的方法。