在我的一个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的数据类型?
提前致谢。
此致 迪帕
答案 0 :(得分: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"];
}
答案 1 :(得分: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开始。但你真的不想这样做。我承诺。
答案 2 :(得分: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];
}
答案 3 :(得分:0)
您可以创建2个操作表,并可以检查代理权限以获取适当的操作。 为什么不是2张动作单?
像这样的东西: - (void)actionSheetUIActionSheet *)modalView clickedButtonAtIndexNSInteger)buttonIndex { if(modalView == _ firstActionSheetView) { } 其他 { } }