簡體   English   中英

Swift中的初始化器

[英]Initializer in Swift

可以說我有MainVC1和MainVC2,並且根據用戶類型,我決定在應用程序啟動時加載其中一個,沒有太多要做的工作來找出要選擇的選項,但是我想將其放在AppDelegate上是不正確的,所以我創建了一個VC名稱PreMain,這決定了這個問題,但是問題是AppStartUp丑陋,導致VC出現並快速消失(thePreMain),然后其中的Mains將啟動,有沒有更好的方法呢? 還是有可能沒有實際的View的ViewController?

困擾的方式是在AppDelegate中更改rootViewController

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {


    var initialViewController: UIViewController!
    let storyboard = UIStoryboard(name: "Main", bundle: nil)

    if somecondition {
      initialViewController = storyboard.instantiateViewController(withIdentifier: "FirstViewController")//replace your FirstViewController identifier
    } else {
      initialViewController = storyboard.instantiateViewController(withIdentifier: "SecondViewController")//replace your SecondViewController identifier
    }

    window?.rootViewController = initialViewController
    window?.makeKeyAndVisible()

    return true
  }

但我認為將其放在AppDelegate上是不正確的

選擇AppDelegate來執行該邏輯沒錯,畢竟在didFinishLaunching之后,您可以自由地做任何事情。

就像您說的那樣,PreMain會短暫出現。

這是可以幫助您使用情節提要以編程方式設置初始視圖控制器的鏈接

避免任何“ VC來臨時消失”

但我認為將其放在AppDelegate上是不正確的

其實那是不對的! 如果您試圖通過實例化pre View Controller來解決問題(如您所提到的那樣),那就是“不正確”的情況。

application(_:didFinishLaunchingWithOptions :)文檔中所述:

告訴與會代表啟動過程即將完成,並且應用程序即將運行。

這似乎是確定所需的初始View控制器的良好起點。 您可能需要檢查: 在appdelegate中設置初始viewcontroller-為實現此目的而迅速進行問答,您所要做的就是實現選擇所需視圖控制器的邏輯。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM