[解決済み] アクションシートにUIPickerViewとボタンを追加する - How?
質問
私のアプリケーションでは、アクションシートに以下のものを追加する必要があります。
- UIToolbar
- UIToolbarのボタン
- UIPicker コントロール
私は私の要件を理解するために画像を添付しています。
どのように実装すればよいのか、教えてください。
どのように解決するのですか?
iOS 7のアップデート
UIActionSheet の Apple ドキュメント
:
UIActionSheet is not designed to be subclassed, nor should you add views to its hierarchy
iOS 7 では深刻な無効なコンテキスト エラーにつながる可能性があるため、ActionSheet のコンテンツをカスタマイズしようとしないことをお勧めします。私はこの問題を解決するのに数時間を費やしましたが、最終的に別のアプローチを取ることにしました。アクション シートを表示する呼び出しを、シンプルなテーブル ビューを含むモーダル ビュー コントローラに置き換えたのです。
これを達成する方法はたくさんあります。私が現在のプロジェクトで実装した方法の 1 つを紹介します。ユーザーにオプションのリストから選択させる 5、6 の異なる画面間で再利用できるので、これは素晴らしいです。
-
UITableViewControllerのサブクラスを新規に作成します。
SimpleTableViewController
. - ストーリーボードにUITableViewControllerを作成し(ナビゲーションコントローラーに埋め込み)、そのカスタムクラスをSimpleTableViewControllerに設定します。
- SimpleTableViewControllerのナビゲーションコントローラーにストーリーボードIDとして"SimpleTableVC"を付与します。
- SimpleTableViewController.hで、テーブルのデータを表現するNSArrayプロパティを作成します。
-
同じくSimpleTableViewController.hで、プロトコルを作成します。
SimpleTableViewControllerDelegate
に必須メソッドであるitemSelectedatRow:
で、delegate という弱いプロパティがあり、型はid<SimpleTableViewControllerDelegate>
. このようにして、親コントローラに選択範囲を渡します。 -
SimpleTableViewController.m で、テーブルビューのデータソースとデリゲートメソッドを実装し、以下のように呼び出します。
itemSelectedatRow:
でtableView:didSelectRowAtIndexPath:
.
このアプローチには、かなり再利用しやすいという利点があります。使用するには、 ViewController.h で SimpleTableViewController クラスをインポートし、 SimpleTableViewDelegate に適合させ、SimpleTableViewDelegate を実装してください。
itemSelectedAtRow:
メソッドを実装します。そして、モーダルを開くには新しい SimpleTableViewController をインスタンス化し、テーブルデータとデリゲートを設定し、それを表示するだけです。
UINavigationController *navigationController = (UINavigationController *)[self.storyboard instantiateViewControllerWithIdentifier:@"SimpleTableVC"];
SimpleTableViewController *tableViewController = (SimpleTableViewController *)[[navigationController viewControllers] objectAtIndex:0];
tableViewController.tableData = self.statesArray;
tableViewController.navigationItem.title = @"States";
tableViewController.delegate = self;
[self presentViewController:navigationController animated:YES completion:nil];
簡単な例を作成し githubに投稿しました。 .
関連
-
[解決済み] カスタムオブジェクトを含むNSMutableArrayをソートするにはどうすればよいですか?
-
[解決済み] Xcode 7のエラーです。"Missing iOS Distribution signing identity for ..." (iOS配布用署名IDがありません)
-
[解決済み] Objective-CでNSNotificationCenterを通してメッセージを送受信する?
-
[解決済み] Unwind segueは何に使うのか、どう使うのか?
-
[解決済み] UIDevice uniqueIdentifierは非推奨 - どうしたらいいの?
-
[解決済み] Swiftを使用してアプリのバージョンとビルド番号を取得するにはどうすればよいですか?
-
[解決済み] NSOperationとGrand Central Dispatchの比較
-
[解決済み] UILabelで複数行のテキストを表示する
-
[解決済み] swiftで電子メールアドレスを検証する方法は?
-
[解決済み] Swiftで配列に要素を追加する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
クラッシュエラー libc++abi.dylib: NSException 型のキャッチできない例外で終了_allanGold のブログ - ProgrammerITS401
-
[解決済み] アトミック属性と非アトミック属性の違いは何ですか?
-
[解決済み] UIViewに角丸をつける
-
[解決済み] UIButtonのタイトルを左揃えにするにはどうしたらよいですか?
-
[解決済み] Swiftを使用してアプリのバージョンとビルド番号を取得するにはどうすればよいですか?
-
[解決済み] iOS - UITextFieldの外側をタッチするとキーボードが外れる。
-
[解決済み] UITextFieldの最大文字数を設定します。
-
[解決済み] SwiftでiOSキーボードを任意の場所でタッチして閉じる
-
[解決済み] iOSで現在のデバイスの言語を取得するには?
-
[解決済み] UITextFieldのテキストインセット?