更改UIAlertView中取消按钮的位置?

时间:2010-12-16 01:29:39

标签: iphone ios ios4 uialertview hig

我注意到当我从iPhone主屏幕删除应用程序时,出现的警报视图会在左侧显示“删除”按钮,在右侧显示“取消”。但是,当我使用UIAlertView在我的应用程序中构建删除功能时,按钮似乎只显示左侧的取消和右侧的删除。

我希望我的应用与操作系统保持一致,但我无法弄清楚如何首先显示“取消”按钮。有谁知道吗?

UIAlertView *alert = [[UIAlertView alloc] 
                      initWithTitle:@"Delete Song" 
                      message:@"Are you sure you want to delete this song? This will permanently remove it from your database." 
                      delegate:self 
                      cancelButtonTitle:@"Cancel" 
                      otherButtonTitles:@"Delete", nil];

我尝试设置alert.cancelButtonIndex = 1,但这没有效果。

2 个答案:

答案 0 :(得分:52)

啊,我刚才想出了如何改变它。 cancelButtonTitle参数是可选的,因此您可以在任何您想要的位置添加自定义按钮,然后将其指定为取消按钮,如下所示:

UIAlertView *alert = [[UIAlertView alloc] 
                      initWithTitle:@"Delete Song" 
                      message:@"Are you sure you want to delete this song? This will permanently remove it from your database." 
                      delegate:self 
                      cancelButtonTitle:nil
                      otherButtonTitles:@"Delete", @"Cancel", nil];
alert.cancelButtonIndex = 1;

将“删除”按钮放在左侧,将“取消”按钮放在右侧,然后突出显示“取消”按钮。

答案 1 :(得分:4)

Apple在主屏幕上使用警报视图的一个可能原因是因为它曾经要求用户对他们正在删除的应用程序进行评级(不再是)。他们可能会将“取消”按钮设置为浅色按钮,因为这被视为破坏性操作(删除应用及其数据)。

我猜你可以反转标题(cancelButtonTitle:@"Delete" otherButtonTitles:@"Cancel", nil)并反过来处理这些按钮的点击次数(不确定Apple是否也这样做)。那会有点尴尬;如何使用操作表呢?