【UIActionSheet】いじっちゃだめなのね

アクションシートは恐らく固定された数のタイトル数だけ作ることの方が多いとは
思いますが、今作っているアプリではタイトル数が変動するので、
“Cancel”ボタンとdestructiveButtonのindexも合わせて変わってしまう
普通に考えるとdestructiveButtonのindex=0、”Cancel”ボタンのindex=(タイトル数)
とするのが宜しいですが、
当初、destructiveButtonを”Cancel”ボタンの上に持ってこようと思った訳です
なので、destructiveButtonのindex=(タイトル数)、”Cancel”ボタンのindex=(タイトル数+1)
と指定したわけです
例えば、

”てすと”というアクションシートで、あ~うという項目が有って、
destructiveButtonの”該当無し”、”Cancel”ボタンと定義したわけです
delegateのbuttonIndex値も、”あ”=0、”該当無し”=3(タイトル数)
何も問題なかったわけです
ところが、タイトル項目が増えて
あ~う(3コ) → あ~か(6コ)になった場合、

勝手にスクロールビュー(と言うか、テーブルビュー)に変身してくれるのは
実に有りがたいことなのですが、
destructiveButtonの”該当無し”が一番上に移動しちゃいました
buttonIndex値は、”該当無し”=6(タイトル数)で問題無いのですが、
”あ”=1になってしまい、”か”=6になってしまい
index値6が2つ存在するという問題が起こったわけです
で、どうしたかと言えば
destructiveButtonのindex値=0と固定して最上部に表示するようにしました
マニュアルにも値は変えるべきじゃ無いようなこと書いてあるし。
(でも、index値いじれるじゃん)
最初に書いたようにタイトル数が固定の場合、アクションシートを生成する時
UIActionSheet *sheet = [[UIActionSheet alloc]initWithTitle:@”テスト”
            delegate:self
            cancelButtonTitle:@”Cancel”
            destructiveButtonTitle:@”該当なし”
            otherButtonTitles:@”あ”,@”い”,@”う”, nil];
と書くと

と表示されることからも
destructiveButtonのindex値=0が望ましい(正しい)様です

Translate »