2010-12-16 10 views
12

iPhoneのホーム画面からアプリを削除すると、表示されるアラートビューには、左側に削除ボタンが表示され、右側にキャンセルが表示されています。しかし、私がUIAlertViewを使ってアプリケーション内でdelete関数をビルドすると、ボタンは左にCancel、右にDeleteと表示されるようです。UIAlertViewのキャンセルボタンの位置を変更しますか?

私は自分のアプリがOSと一貫していることを望みますが、キャンセルボタンを最初に表示させる方法を理解できません。誰か知っていますか?

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

アップルがホーム画面で警告表示を使用したのは、削除していたアプリケーションの評価をユーザに依頼したためです(もはやではありません)。キャンセルボタンは明るい色のボタンになりました。これは破壊的な操作(アプリとそのデータを削除)とみなされたためです。

タイトル(cancelButtonTitle:@"Delete" otherButtonTitles:@"Cancel", nil)を逆にして、そのボタンのクリックを他の方法で処理できると思います(アップルが同じことをしたかどうかは分かりません)。それは少し厄介かもしれません。代わりにアクションシートを使用するのはどうですか?

+0

ええ、あなたはOSの他の部分の標準が何であるか知っていますか?私はこれを探す場所の他の例は考えられません。とにかく、ホーム画面からアプリを削除する際に非標準設定が使用されている場合は、それに合わせる必要はありません。 – arlomedia

+0

@arlomedia:他の削除アラートは表示されませんでした。 SMSとカレンダーアラートの両方が、SDKの場合と同様に、キャンセル(閉じる)ボタンを左に置きます。 AFAIK、何かを削除する他の場所(写真、連絡先、カレンダーイベント、メモ、iPodプレイリスト)にはアクションシートが使用されます。 – BoltClock

+0

さて、私はそれをそのまま残しておきます。情報をありがとう。 – arlomedia

52

ああ、私はちょうどこれを変更する方法を考え出しました。 [削除]ボタンを左と[キャンセル]ボタンを置く

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; 

:あなたが好きな位置にカスタムボタンを追加し、このようなキャンセルボタン、などということを指定することができるようにcancelButtonTitle引数は、オプションです。キャンセルボタンを強調表示します。

+3

+1私の提案にAppleが意図したことは間違いなく良い。 – BoltClock

+0

私はこれを見てまでナッツに行くと思った。他のボタンのタイトルとしてキャンセルボタンと@ "はい"を使用しようとしましたが、buttonIndex 0はキャンセルボタンでした。私は本当にそれがApplesの部分のバグ以外には見えませんが、誰が私が何かを尋ねることができないのか疑問に思っていますか?このアプローチは完璧に動作しますが、ありがとう! – FrostyL

+4

私はこれがiOS 8.3(Simulator)では動作しなくなりましたが、iOS 7.1ではうまく動作することがわかりました。これは、アップルの警告の中には、8.3であっても、右に「取り消し」をしている*という*警告があるにもかかわらずです。 (私は彼らがそれをどうやっているのだろうか!) –

関連する問題