如何让UIActionsheet识别最近推送的按钮?

时间:2012-03-21 10:54:10

标签: objective-c uiactionsheet

我目前正在实施一个有两个按钮的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中的按钮。

任何有关如何实施此类内容的提示和/或指示都将受到高度赞赏!

1 个答案:

答案 0 :(得分:1)

UIActionSheet有三种不同的按钮显示样式:破坏性按钮(红色),用于......好,破坏性动作,取消按钮,它是底部的,比常规按钮稍暗,以及所谓的“其他”按钮“,颜色为灰色。

现在,如果你想使用一个没有hacky-hacky的解决方案,你可以使用这三种颜色来创建你需要的效果,只需创建一个if条件并每次都有点不同地实例化你的动作表。

如果您都是hacky-hacky解决方案并希望获得更多颜色,您可能需要考虑迭代操作表中的所有子视图并直接修改其样式。但请注意:您的解决方案可能无法在未来的iOS版本中运行,因为无法保证没有公共API的内部组件不会更改(这就是为什么在大多数情况下没有公共API)。