iPhone:处理多个操作表

Posted

技术标签:

【中文标题】iPhone:处理多个操作表【英文标题】:iPhone: Handle multiple action sheets 【发布时间】:2010-08-13 06:27:47 【问题描述】:

我的一个观点使用了 3 个操作表,这些操作表来自单击各种按钮时产生的。因为我只有一个- (void)actionSheet:(UIActionSheet *)actionSheet didDismissWithButtonIndex:(NSInteger)buttonIndex 方法,所以知道我正在处理哪个操作表的最佳方法是什么?选择我的任何 actionSheet 上的第一个按钮将是 buttonIndex 0。所以我需要知道如何知道来自哪个 actionSheet 调用。

想法?

【问题讨论】:

【参考方案1】:

您需要在创建操作表时设置标签,并在您的操作表方法中对其进行测试。

【讨论】:

【参考方案2】:

我遇到了同样的问题,我只是根据操作表的标题设置了一个条件:

- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex 


if (actionSheet.title == @"present action sheet A") 

//do some stuff


if (actionSheet.title == @"present action sheet B") 

//do some stuff


像魅力一样工作,不确定操作表是否有标签,但也许我错了。

【讨论】:

是的。我认为标签方法更干净。【参考方案3】:

对 3 个操作表使用类级别变量。然后就可以在actionSheet方法中比较action的来源了。

【讨论】:

【参考方案4】:

在创建动作时设置标签

UIActionSheet * actionSheet = 
[[UIActionSheet alloc] 
initWithTitle:@"My title" delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:nil  otherButtonTitles:@"Option1",@"Option2", nil];

actionSheet.tag = 1100;





-(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex



if(actionSheet.tag == 1100)


    switch (buttonIndex) 
    
        case 0: 
          
        
           break;
        case 1:
        

        
            break;
        default:
            break;
      
  

【讨论】:

以上是关于iPhone:处理多个操作表的主要内容,如果未能解决你的问题,请参考以下文章

我们如何在 iPhone Xcode 中处理多个 NSURLConnection?

在 iPhone/iPad 应用程序中处理多个警报视图

操作表中的 Pickerview 在 iPhone 中显示,但在 iPad 中不显示

仅针对 iPad 和 iPhone 的特定样式表

iPhone在表格视图项目单击上打开多个视图控制器

iPhone 3.0 MapKit - 同一位置的多个注释