我有一个动态创建的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.这是可能还是有另一种方式做到了吗?
答案 0 :(得分:6)
使用buttonTitleAtIndex:
方法检查按钮的标题。但是,如果在一个地方更改按钮的标题,则必须注意不要破坏代码。在创建按钮时,最好将每个按钮的标题保存在一个额外的变量中,然后使用此变量与按钮标题进行比较。
答案 1 :(得分:2)
创建UIActionSheet时,请保留一个单独的数组,将按钮索引映射到您要执行的实际任务(例如,动作枚举)。
然后启用tasks[buttonIndex]
而不是buttonIndex
。