动态更改UIActionSheet按钮和操作

时间:2012-03-01 10:14:46

标签: objective-c uiactionsheet

我有一个动态创建的UIActionSheet,它可以有1到5个按钮,包括取消按钮。我可以让取消按钮正常工作,但是我们只需要在UIActionSheet上添加2个按钮,让我们说按钮2和4如何确定要执行的操作。通常我会使用类似的东西。

 - (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex {
          switch(buttonIndex) {
                 case 0:
                       // Do something here.
                       break;
                 case 1:
                       // Do something else here.
                       break;
                 case 2:
                       // Do something else again.
                       break;
                 case 3:
                       //  Do something else here again.
                       break;
                 default:
                        break;
          }

但是,如果我只动态添加两个按钮,那么只会使用案例0,1。但是如果我将按钮4添加为两个按钮之一,我仍然希望它使用案例3.这是可能还是有另一种方式做到了吗?

2 个答案:

答案 0 :(得分:6)

使用buttonTitleAtIndex:方法检查按钮的标题。但是,如果在一个地方更改按钮的标题,则必须注意不要破坏代码。在创建按钮时,最好将每个按钮的标题保存在一个额外的变量中,然后使用此变量与按钮标题进行比较。

答案 1 :(得分:2)

创建UIActionSheet时,请保留一个单独的数组,将按钮索引映射到您要执行的实际任务(例如,动作枚举)。

然后启用tasks[buttonIndex]而不是buttonIndex