我目前正在实施一个有两个按钮的UIActionsheet
。
每个按钮将不同的值保存到[NSUserDefaults standardUserDefaults]
我有atm的实现:
-(void)foo{
UIActionSheet *mySheet = [[UIActionSheet alloc] initWithBlabla:blabla];
[mySheet showFromTabBar:myTabBar];
[mySheet release];
{
-(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex{
if(buttonIndex == x){
[[NSUserDefaults standardUserDefaults] setValue:foo forKey:bar];
{
else{
// bla
{
}
现在,对于我手边的问题。
我真的希望动作表能够识别最近点击的按钮,并以某种方式呈现。
因此,例如,动作表第一次显示时,两个按钮都是默认的灰色,一个按钮被按下,动作表就会消失。
动作表第二次显示,它就像第一次一样出现。我希望该动作表能够向用户提供有关最近推送哪些按钮的反馈。 (不同的颜色或任何真正的东西)。
如果我可以访问动作表中生成的按钮,这将是一个无问题。
在伪代码中,我可能需要一种解决方案,如下所示
UIActionSheet *myActionSheet = [[UIActionSheet] alloc] initwithBlabla:blabla];
if([[userDefaults objectForKey:@"foo"]isEqualToString:@"bar"])
{
[myActionSheet setHighLighted:otherButton2];
}
我希望操作表能够识别密钥foo
的用户默认值,并调整UIActionSheet
中的按钮。
任何有关如何实施此类内容的提示和/或指示都将受到高度赞赏!
答案 0 :(得分:1)
UIActionSheet有三种不同的按钮显示样式:破坏性按钮(红色),用于......好,破坏性动作,取消按钮,它是底部的,比常规按钮稍暗,以及所谓的“其他”按钮“,颜色为灰色。
现在,如果你想使用一个没有hacky-hacky的解决方案,你可以使用这三种颜色来创建你需要的效果,只需创建一个if条件并每次都有点不同地实例化你的动作表。
如果您都是hacky-hacky解决方案并希望获得更多颜色,您可能需要考虑迭代操作表中的所有子视图并直接修改其样式。但请注意:您的解决方案可能无法在未来的iOS版本中运行,因为无法保证没有公共API的内部组件不会更改(这就是为什么在大多数情况下没有公共API)。