2010-08-13 43 views
2

我的一個視圖使用了3個操作表,它們來自點擊各個按鈕時的表單。由於我只有一個- (void)actionSheet:(UIActionSheet *)actionSheet didDismissWithButtonIndex:(NSInteger)buttonIndex方法,因此知道我正在處理哪個操作表的最佳方法是什麼?選擇我的任何actionSheets上的第一個按鈕將buttonIndex 0.所以我需要知道如何知道來自哪個actionSheet調用。iPhone:處理多個操作表

想法?

回答

10

您需要在創建操作表並在操作表方法中針對該操作表進行測試時設置標記。

0

對3個操作表使用類級別變量。然後你可以比較actionSheet方法中的動作來源。

1

我有同樣的問題,我簡單地設置了基於動作片的標題條件:

- (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 

} 

得好好的,如果沒有把握的動作片有標記,也許我雖然錯了。

+0

是的,他們做的設置標籤。我認爲標籤方法更清潔。 – 2010-10-19 21:56:05

0

當您創建一個動作

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; 
    } 
} 
}