12

我注意到当我从 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,但没有效果。

4

2 回答 2

53

啊,我刚刚想出了如何改变这个。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;

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

于 2010-12-16T05:35:05.967 回答
4

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

我猜你可以颠倒标题(cancelButtonTitle:@"Delete" otherButtonTitles:@"Cancel", nil)并以相反的方式处理这些按钮的点击(不确定Apple是否也这样做)。不过那会有点尴尬。改用操作表怎么样?

于 2010-12-16T01:38:58.057 回答