如何在UIAlertView中容纳8个按钮

时间:2013-06-10 06:47:09

标签: ios objective-c button uialertview

enter image description here我在alertview中发了问题。最初我的alertview中有6个按钮..然后我不得不在我的alertview中添加两个按钮..当我再添加两个按钮时,框架大小变为问题..

请参考截图..

-(IBAction)FilterButton:(id)sender
{
    UIAlertView *alert1 = [[UIAlertView alloc]
                           initWithTitle:nil
                           message:@"\n\n\n\n\n"
                           delegate:self
                           cancelButtonTitle:@"Cancel"
                           otherButtonTitles:@"Customer",@"Contact",@"Lead",@"Team Member",@"Ex-Team Member",@"Inactive Customer",@"All Contacts",nil];

    [alert1 show];
}

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
    switch (buttonIndex) {

        case 1:
        {
            qsql = [NSString stringWithFormat:@"select * from pu_Contacts where ContactType = 'CUS' and isDeleted ='0';"];
            [self selected];
            break;            
        }
        case 2:
        {
            qsql = [NSString stringWithFormat:@"select * from pu_Contacts where ContactType = 'CT' and isDeleted ='0';"];
            [self selected];
            break;            
        }
        case 3:
        {
            qsql = [NSString stringWithFormat:@"select * from pu_Contacts where ContactType = 'LD' and isDeleted ='0';"];
            [self selected];
            break;            
        }       
        case 4:
        {
            qsql = [NSString stringWithFormat:@"select * from pu_Contacts where ContactType = 'TM' and isDeleted ='0';"];
            [self selected];
            break;
        }
        case 5:
        {
            qsql = [NSString stringWithFormat:@"select * from pu_Contacts where ContactType = 'ETM' and isDeleted ='0';"];
            [self selected];
            break;
        }
        case 6:
        {
            qsql = [NSString stringWithFormat:@"select * from pu_Contacts where ContactType = 'INACUS' and isDeleted ='0';"];
            [self selected];
            break;
        }
        case 7:
        {
            qsql = [NSString stringWithFormat:@"select * from pu_Contacts where isDeleted ='0';"];
            [self selected];
            break;
        }
    }
}

3 个答案:

答案 0 :(得分:3)

首先,没有截图。 (好的,现在已修复)。

其次,看起来您正在使用UIAlertView向用户询问他们想要做什么。

这不是UIAlertView的用途。 UIAlertView是告知用户他们需要了解的事情。

您需要使用的是UIActionSheet。这些设计用于要求用户根据他们刚刚采取的行动做出决定。即按下“相机”按钮,询问用户是否要拍照或从相机胶卷中选择。

这完全在人机界面指南中。

第三,如果您需要在屏幕上添加8个选项加上取消,那么您做错了。找到另一种方法,在不使用8个按钮的情况下为用户提供所有这些。

其他选项......

您正在编写iPap应用程序。

您可以将所有选项放入UITableView内的UIPopOverController。 UITableView更适合显示大量选项。

与上面类似,在弹出窗口内使用UIPickerView。同样,这更适合于大量选择。它还使用户更容易理解他们正在选择其中一个选项。

可以有多种方法来实现这一目标。

答案 1 :(得分:2)

为什么不用你需要的所有按钮创建一个视图并显示它?

UIAlertview不是为此目的

  

根据文件

     

使用UIAlertView类向用户显示警报消息。一个   警报视图功能类似但外观不同于   行动表

答案 2 :(得分:2)

我在Alertview中测试了你的创建代码添加按钮但很难管理它所以我建议你使用像下面的代码一样的UIActionsheet: -

  UIActionSheet *MultipleAcions = [[UIActionSheet alloc] initWithTitle:@"title" delegate:self cancelButtonTitle:@"Cancel Button" destructiveButtonTitle:nil otherButtonTitles:@"Customer",@"Contact",@"Lead",@"Team Member",@"Ex-Team Member",@"Inactive Customer",@"All Contacts",nil];
    MultipleAcions.actionSheetStyle = UIActionSheetStyleDefault;
    [MultipleAcions showInView:self.view];

它看起来如同截屏: -

enter image description here

您可以使用下面的UIActionsheet代表获取每个按钮的索引: -

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