モーダルビューコントローラーの提示と解除
質問
どなたか、モーダルビューコントローラを最初に表示し、次にそれを解除するために使用できるサンプルコードを教えていただけませんか?これは私が試しているものです。
NSLog(@"%@", blue.modalViewController);
[blue presentModalViewController:red animated:YES];
NSLog(@"%@", blue.modalViewController);
[blue dismissModalViewControllerAnimated:YES];
NSLog(@"%@", blue.modalViewController);
このコードは viewDidLoad にあります("blue" と "red" は両方とも UIViewController のサブクラスです)。私は、赤のビューを表示し、すぐにアニメーションで隠すことを期待しています。しかし、このコード片はモーダルビューを表示するだけで、それを解除することはありません。何か思い当たることはありますか?最初のログには "null" が表示され、他の2つのログには
<RedViewController: 0x3d21bf0>
もう一つのポイントは、もし私が applicationDidFinishLaunching にこのコードを入れたら、赤いビューは全く表示されず、すべてのログは "null" を取得します。
どのように解決するのですか?
まず、applicationDidFinishLaunchingにそのコードを入れた場合、Interface Builderからインスタンス化されたコントローラがまだアプリケーションにリンクされていない場合があります(つまり、"red" と "blue" はまだ
nil
).
しかし、最初の質問に答えるなら、あなたが間違っているのは
dismissModalViewControllerAnimated:
を間違ったコントローラで呼び出していることです! このようにする必要があります。
[blue presentModalViewController:red animated:YES];
[red dismissModalViewControllerAnimated:YES];
通常、"red"コントローラは、ある時点で(おそらく"cancel"ボタンがクリックされたとき)自分自身を解任することを決定するはずです。そして、"red" コントローラは、以下のメソッドを呼び出すことができます。
self
:
[self dismissModalViewControllerAnimated:YES];
それでもうまくいかない場合は、コントローラがアニメーションで提示されるため、提示後すぐにコントローラを解除することができないことが関係している可能性があります。
関連
-
クラッシュエラー libc++abi.dylib: NSException 型のキャッチできない例外で終了_allanGold のブログ - ProgrammerITS401
-
[解決済み] アトミック属性と非アトミック属性の違いは何ですか?
-
[解決済み] キーボードがあるときに、UITextFieldを編集開始時に上に移動させるには?
-
[解決済み] UIViewController のビューが表示されているかどうかを確認する方法
-
[解決済み] UIDevice uniqueIdentifierは非推奨 - どうしたらいいの?
-
[解決済み] Swift 3, 4, 5 で dispatch_after GCD を書くにはどうしたらいいですか?
-
[解決済み] iPadマルチタスクのサポートには、これらの方向が必要です。
-
[解決済み] NSNotificationCenterのaddObserver in Swift
-
[解決済み] UITextFieldのテキストインセット?
-
[解決済み] 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 実装 サイバーパンク風ボタン
おすすめ
-
[iOS]コンパイルエラー:ld: アーキテクチャ x86_64 のシンボルが見つかりません。
-
[解決済み] UITextViewのプレースホルダー
-
[解決済み] Xcode 6のバグ:Interface Builderファイル内の不明なクラス
-
[解決済み] Objective-CでNSNotificationCenterを通してメッセージを送受信する?
-
[解決済み] UIViewの左上と右上だけにcornerRadiusを設定する方法は?
-
[解決済み] iOSとWatchKitで画像のtintColorを変更する方法
-
[解決済み] iOSで現在のデバイスの言語を取得するには?
-
[解決済み] Swiftのプロトコルでオプションのメソッドを定義するには?
-
[解決済み】SwiftでviewControllerをインスタンス化して提示する
-
[解決済み】iOSでポップアップのダイアログボックスを実装するには?