[解決済み】UIAlertControllerをビューコントローラーでない時に表示するには?
2022-04-16 06:44:54
質問
シナリオ ユーザーがビューコントローラのボタンをタップした。ビューコントローラは、ナビゲーションスタックの一番上にある(当然)。タップは、別のクラスで呼び出されるユーティリティクラスのメソッドを呼び出します。そこで悪いことが起こり、制御がビューコントローラに戻る前に、その場で警告を表示したい。
+ (void)myUtilityMethod {
// do stuff
// something bad happened, display an alert.
}
で可能でした。
UIAlertView
(ただし、おそらく適切ではない)。
この場合、どのように提示するかというと
UIAlertController
で、その場で
myUtilityMethod
?
解決方法は?
を投稿しました。 類似の質問 数ヶ月前、この問題を解決することができました。コードを見るだけなら、私の投稿の一番下にあるリンクをたどってください。
解決策は、追加のUIWindowを使用することです。
UIAlertControllerを表示させたい場合。
-
自分のウィンドウをキーウィンドウ、可視ウィンドウにする(
window.makeKeyAndVisible()
) -
新しいウィンドウのルートViewControllerとして、プレーンなUIViewControllerのインスタンスを使用するだけです。(
window.rootViewController = UIViewController()
) - UIAlertControllerをウィンドウのrootViewControllerに表示します。
2つほど注意点があります。
- UIWindowは強く参照されている必要があります。強く参照されていない場合は、決して表示されません(リリースされるため)。プロパティを使用することをお勧めします。 関連オブジェクト .
-
ウィンドウが他のすべて(システムUIAlertControllersを含む)の上に表示されるようにするために、windowLevelを設定しました。(
window.windowLevel = UIWindowLevelAlert + 1
)
最後に、完成した実装がありますので、それだけをご覧になりたい方はどうぞ。
関連
-
[解決済み】ウィンドウ階層にないビューを持つUIViewControllerでUIViewControllerを表示しようとする
-
[解決済み】 libc++abi.dylib: NSException 型のキャッチできない例外で終了する (lldb)
-
[解決済み】iOS用のプライベートメッセージUI(受信、送信、作成)フレームワークはありますか?
-
[解決済み] Xcode コマンド /usr/bin/codesign は終了コード 1 で失敗しました : errSecInternalComponent
-
[解決済み] シミュレータへのサービス接続の開始に失敗しました Xcode
-
[解決済み] #ifdef DEBUG 対 #if DEBUG
-
[解決済み] Xcodeで実行ファイルが無効なエンタイトルメントで署名されてしまう
-
[解決済み] viewDidLoad()は何のためにあるのですか?[重複]する
-
[解決済み] 条件付きバインディング:letエラーの場合 - 条件付きバインディングのイニシャライザーはOptional型でなければならない
-
[解決済み] キーボードがあるときに、UITextFieldを編集開始時に上に移動させるには?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 'strcmp' はこのスコープで宣言されていません。
-
[解決済み] Xcode 10でコマンドCompileSwiftが0以外の終了コードで失敗する [重複] 。
-
[解決済み] Swiftエラー。変数がそれ自身の初期値内で使用されている
-
[解決済み] Cordova Camera iOSの問題。NOT_FOUND_ERR
-
[解決済み] Xcode 9の問題を修正しました。"iPhoneはビジー状態です。iPhoneのデバッガーサポートを準備中"
-
[解決済み] UIViewController viewDidLoad vs. viewWillAppear。適切な役割分担とは?
-
[解決済み] Xcode 4のBundle creator OS Type code ?
-
[解決済み] iOS 9 : ユニバーサルアプリの警告「アプリがフルスクリーンを必要としない限り、すべてのインターフェイスの向きをサポートする必要があります」。
-
[解決済み] viewDidLoad()は何のためにあるのですか?[重複]する
-
[解決済み] BluetoothのロゴはiPhoneのキャラクターとして利用できますか?