12

iPhoneのホーム画面からアプリを削除すると、表示されるアラートビューの左側に[削除]ボタン、右側に[キャンセル]ボタンが表示されることに気付きました。ただし、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

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 に答える