我有一個OnboardingViewController
可以從應用程式設定以模態樣式訪問的內容。
當用戶第一次打開應用程式時,我想以OnboardingVC
相同的模式樣式(帶有上部選項卡效果,如下所示:Screenshot)向他展示它是否從設定中顯示它加載。
SceneDelegate
設定:
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
guard let scene = (scene as? UIWindowScene) else { return }
window = UIWindow(windowScene: scene)
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let controller = storyboard.instantiateViewController(withIdentifier: "OnboardingViewController") as! OnboardingViewController
window?.rootViewController = controller
window?.makeKeyAndVisible()
}
問題它總是出現在全屏中,頂部沒有上面的模態標簽效果。
如何解決?
uj5u.com熱心網友回復:
您不能呈現UIViewController
視窗的(模態或全屏)rootViewController
。
要在用戶第一次打開應用程式時顯示入職螢屏,請將主螢屏/登錄螢屏(或您想要的任何螢屏)設定rootViewController
為SceneDelegate
. 然后,UIViewController
您可以檢查用戶是否第一次打開應用程式。根據您可以顯示入職螢屏。
您必須嵌入rootViewController
aUINavigationViewController
以呈現/推送另一個UIViewController
在SceneDelegate.swift 中修改如下代碼。
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
guard let scene = (scene as? UIWindowScene) else { return }
window = UIWindow(windowScene: scene)
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let controller = storyboard.instantiateViewController(withIdentifier: "HomeViewController") as! HomeViewController
//embed in UINavigationController
let navController = UINavigationController(rootViewController: controller)
window?.rootViewController = navController
window?.makeKeyAndVisible()
}
然后在主螢屏(我假設它是 HomeViewController)中檢查第一次打開的狀態并呈現 Onboarding 螢屏。
class HomeViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let controller = storyboard.instantiateViewController(withIdentifier: "OnboardingViewController") as! OnboardingViewController
controller.modalPresentationStyle = .formSheet
self.present(controller, animated: true)
}
}
您可以rootViewController
使用下面的代碼從應用程式中的任何位置獲取。然后呈現您想要顯示的任何 ViewController。
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let controller = storyboard.instantiateViewController(withIdentifier: "OnboardingViewController") as! OnboardingViewController
controller.modalPresentationStyle = .formSheet
let rootVC = UIApplication.shared.windows.first!.rootViewController
rootVC?.present(controller, animated: true)
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/470081.html
標籤:迅速 用户界面控制器 uikit 用户界面窗口 当前模态视图控制器
上一篇:按順序更改陣列中的值
下一篇:在這個例子中用智能指標替換new