swiftを使ったアプリデリゲートからのビューコントローラのオープン
2023-08-05 18:29:10
質問
プッシュ通知で取得した情報に応じて、どのビューを開くかを決定するプッシュ通知を作成しようとしています。
プッシュから情報を取得することはできましたが、開くビューを決定するのに苦労しています。
他のスタックオーバーフローの質問を見て、私は現在次のようなものを持っています。
App Delegate ロードが終了しました。
//Extract the notification data
if let notificationPayload = launchOptions?[UIApplicationLaunchOptionsRemoteNotificationKey] as? NSDictionary {
// Get which page to open
let viewload = notificationPayload["view"] as? NSString
let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle:nil)
//Load correct view
if viewload == "circles" {
var viewController = self.window?.rootViewController?.storyboard?.instantiateViewControllerWithIdentifier("Circles") as! UIViewController
self.window?.rootViewController = viewController
}
}
現在、var ViewController = self...の行で失敗しています。
どのように解決するのですか?
ViewControllerのStoryBoardIdプロパティを下図のように設定する必要があります。
swiftで以下のようなコーディングでviewControllerを開きます。
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
let mainStoryboardIpad : UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let initialViewControlleripad : UIViewController = mainStoryboardIpad.instantiateViewControllerWithIdentifier("Circles") as UIViewController
self.window = UIWindow(frame: UIScreen.main.bounds)
self.window?.rootViewController = initialViewControlleripad
self.window?.makeKeyAndVisible()
return true
}
iOS 13+ 用
(ベースは
dev2qa さんの記事
)
開く
SceneDelegate.swift
を開き、以下を追加します。
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
// If this scene's self.window is nil then set a new UIWindow object to it.
self.window = self.window ?? UIWindow()
// Set this scene's window's background color.
self.window!.backgroundColor = UIColor.red
// Create a ViewController object and set it as the scene's window's root view controller.
self.window!.rootViewController = ViewController()
// Make this scene's window be visible.
self.window!.makeKeyAndVisible()
guard scene is UIWindowScene else { return }
}
オープンソースの ナビゲーションユーティリティ があり、これをより簡単にすることを試みています。 例
関連
-
[解決済み] SwiftからObjective-Cのコードを呼び出すにはどうしたらいいですか?
-
[解決済み] iOSシミュレータでスクリーンショットを撮る
-
[解決済み] Swiftを使用してアプリのバージョンとビルド番号を取得するにはどうすればよいですか?
-
[解決済み] UILabelで複数行のテキストを表示する
-
[解決済み] Swift で app delegate への参照を取得するにはどうすればよいですか?
-
[解決済み] 16進カラーバリューの使用方法
-
[解決済み] iOSアプリをApple Developer Programや脱獄せずにデバイス上でテストすることができます。
-
[解決済み] swiftで電子メールアドレスを検証する方法は?
-
[解決済み】Storyboardsを使用して初期ビューコントローラをプログラム的に設定する
-
[解決済み】iOS - ViewControllerからApp Delegateメソッドを呼び出す。
最新
-
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
-
IOSラーニングノート「このクラスはxxxのキーバリューコーディングに対応していません」問題解決
-
EXC_BAD_ACCESS (code=2, address=0x0)
-
[解決済み] フレームワークを使用したiOSアプリがデバイス上でクラッシュ、dyld: ライブラリがロードされない、Xcode 6 Beta
-
[解決済み] UITableViewCell、スワイプ時に削除ボタンを表示させる
-
[解決済み] UITextFieldの最大文字数を設定します。
-
[解決済み] SwiftでURLから画像を読み込む/ダウンロードする
-
[解決済み] UIImageのサイズを変更する最も簡単な方法?
-
[解決済み] セキュリティで保護されたWebサービスにもアクセスするiOSアプリで、Facebook認証を行うためのデザイン
-
[解決済み] appdelegateでviewcontrollerの初期値を設定する - swift