2010-12-16 62 views
12

我注意到,當我從iPhone主屏幕刪除應用程序時,出現的警報視圖顯示了左側的刪除按鈕和右側的取消。但是,當我使用UIAlertView在我的應用程序中構建刪除功能時,這些按鈕似乎只在左側顯示爲取消,而在右側顯示爲刪除。更改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

Apple在主屏幕上使用警報視圖的一個可能原因是它曾經要求用戶對他們正在移除的應用程序進行評分(不再是)。他們可能會將取消按鈕變成淺色,因爲這被認爲是破壞性行爲(刪除應用程序及其數據)。

我想你可以顛倒標題(cancelButtonTitle:@"Delete" otherButtonTitles:@"Cancel", nil)並處理對這些按鈕的點擊(不知道蘋果是否也這樣做)。雖然這會有些尷尬;如何使用動作表來代替?

+0

嗯,你知道OS的其他部分是什麼標準嗎?我想不出在哪裏尋找這個的其他例子。無論如何,如果從主屏幕刪除應用程序使用非標準設置,那麼我不需要匹配。 – arlomedia 2010-12-16 02:02:14

+0

@arlomedia:我還沒有看到任何其他刪除警報。 SMS和日曆提醒都將其取消(關閉)按鈕放置在左側,就像SDK一樣。 AFAIK,其他任何地方都會刪除某些內容(照片,聯繫人,日曆事件,備忘錄,iPod播放列表)使用操作表單。 – BoltClock 2010-12-16 02:10:05

+0

好的,我會就這樣離開它。謝謝(你的)信息。 – arlomedia 2010-12-16 04:38:20

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; 

這使刪除按鈕的左側和取消按鈕上右鍵並突出顯示「取消」按鈕。

+3

+1尼斯,絕對是蘋果對我的建議意圖。 – BoltClock 2010-12-16 05:44:00

+0

我以爲我瘋了,直到我看到這個。我嘗試使用@「取消」作爲取消按鈕,@「YES」作爲其他按鈕標題,但buttonIndex 0取消按鈕。除了蘋果公司的一個bug之外,我真的不能把它看成是什麼東西,但我是誰來質疑我無法理解的東西?這種方法雖然完美,但謝謝! – FrostyL 2013-10-16 19:27:32

+4

我發現這不再適用於iOS 8.3(在模擬器中),但在iOS 7.1上正常工作。儘管事實上蘋果的一些警報仍然會*在右邊放置「取消」,甚至在8.3。 (我想知道他們是怎麼做到的!) – 2015-04-22 19:29:52