私は iOS 5.0 アプリに取り組んでおり、キャンセル ボタンのクリックを処理するためのより「エレガントな」方法があるかどうか疑問に思っていました。ドキュメントには何もないように見えるので、答えは「いいえ」だと思います。
基本的に、現在2つのボタンとキャンセルボタンを持つUIActionSheetがあります。最初の 2 つのボタンは、私が持っているコードに基づいて、本来の機能を正確に実行します。
-(void)actionSheet:(UIActionSheet *)actionsheet clickedButtonAtIndex:(NSInteger)buttonIndex
最初の 2 つのボタンは、いくつかの同じ変数に依存していますが、どちらがクリックされたかに応じて、異なるアクションを実行します。これらの変数は、上記のメソッドの switch ステートメントの外側でインスタンス化され、ケースの内側で処理されます。キャンセル ボタンは (明らかに) これらの変数のいずれにも依存しないため、すべてのインスタンス化を回避するために、このコードのすべてを、キャンセル ボタンのインデックスをテストする if ステートメントでラップしています。
これは理想的とは言えません。アクション シートに新しいボタンを追加する場合は、if ステートメントを更新することを忘れないでください。コード自体は全体的に乱雑に見えます。最初の 2 つのボタンのクリック ロジックを処理する新しいメソッドを作成することもできましたが、clickedButtonAtIndex メソッドが呼び出されないようにするキャンセル ボタンを介して ActionSheet を単純に閉じる方法があれば、そこまではやりたくありませんでした。
それが私の質問です。そのメソッドが呼び出されずに ActionSheet を閉じる方法はありますか?