2011-05-17 93 views
0

在我的一個iPhone應用程序中,我需要將可變參數有條件地發送到操作表。即有條件地傳遞可變參數

if(condition1) 
    otherButtonTitles = @"Button1", @"Button2", nil 
else 
    otherButtonTitles = @"Button3", @"Button4", nil 

UIActionSheet *mediaActionsSheet = [[UIActionSheet alloc] initWithTitle: nil 
                  delegate: self 
                cancelButtonTitle: @"Cancel" 
               destructiveButtonTitle: nil 
                otherButtonTitles: otherButtonTitles]; 

這是什麼語法?應如何定義otherButtonTitles的數據類型?

在此先感謝。

問候, 迪帕

回答

3

你不能。 (好吧,這不是不可能的,但你不希望這樣做。)

只需使用

UIActionSheet *mediaActionsSheet=nil; 
if(condition){ 
     mediaActionsSheet=[[UIActionSheet alloc] initWithTitle: nil 
                 delegate: self 
               cancelButtonTitle: @"Cancel" 
              destructiveButtonTitle: nil 
               otherButtonTitles: @"button1",@"button2",nil]; 
}else{ 
     mediaActionsSheet=[[UIActionSheet alloc] initWithTitle: nil 
                 delegate: self 
               cancelButtonTitle: @"Cancel" 
              destructiveButtonTitle: nil 
               otherButtonTitles: @"button2",@"button3",nil]; 
} 

如果你真的想構建一個變量來保存可變數量的參數,從this Wikipedia article開始。但你並不是真的想這樣做。我承諾。

0

您可以創建2張的行動,可在委託檢查正確合適的行動.. 何不2個動作片?

是這樣的: - (無效)actionSheetUIActionSheet *)modalView clickedButtonAtIndexNSInteger)buttonIndex { 如果(modalView == _ firstActionSheetView) {} 其他 { } }

1

那麼你可以簡單地在你的條件下創建操作表。

UIActionSheet *mediaActionsSheet; 
if(condition1) 
    { 
    mediaActionsSheet = [[UIActionSheet alloc] initWithTitle: nil 
                  delegate: self 
                cancelButtonTitle: @"Cancel" 
               destructiveButtonTitle: nil 
           otherButtonTitles:@"Button1", @"Button2", nil]; 
} 

else 


{ 
mediaActionsSheet = [[UIActionSheet alloc] initWithTitle: nil 
                 delegate: self 
               cancelButtonTitle: @"Cancel" 
               destructiveButtonTitle: nil 
           otherButtonTitles:@"Button3", @"Button4", nil]; 
} 
7
UIActionSheet * mediaActionsSheet; 
mediaActionSheet = [[UIActionSheet alloc] initWithTitle: nil 
               delegate: self 
             cancelButtonTitle: @"Cancel" 
           destructiveButtonTitle: nil 
             otherButtonTitles:nil]; 


if(condition1){ 

    [mediaActionsSheet addButtonWithTitle:@"Button1"]; 
    [mediaActionsSheet addButtonWithTitle:@"Button2"]; 
} 
else { 

    [mediaActionsSheet addButtonWithTitle:@"Button3"]; 
    [mediaActionsSheet addButtonWithTitle:@"Button4"]; 
} 
+0

這大概是最可讀的解決方案在這裏的。 – 2011-05-17 06:01:35