Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/115.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Swift中的初始值设定项_Ios_Swift_Initialization_Viewcontroller - Fatal编程技术网

Ios Swift中的初始值设定项

Ios Swift中的初始值设定项,ios,swift,initialization,viewcontroller,Ios,Swift,Initialization,Viewcontroller,假设我有MainVC1和MainVC2,根据用户类型,我决定在app start上加载其中一个,要想知道选择哪一个没什么可做的,但我想把它放在AppDelegate上是不对的,所以我创建了一个VC名称PreMain来决定这一点,但问题是AppStartUp很难看,因为VC很快就来了又消失了(保留)然后主电源将启动,是否有更好的方法来执行此操作?或者是否有可能在没有实际视图的情况下使用ViewController?Beset way正在更改AppDelegate中的rootViewControll

假设我有MainVC1和MainVC2,根据用户类型,我决定在app start上加载其中一个,要想知道选择哪一个没什么可做的,但我想把它放在AppDelegate上是不对的,所以我创建了一个VC名称PreMain来决定这一点,但问题是AppStartUp很难看,因为VC很快就来了又消失了(保留)然后主电源将启动,是否有更好的方法来执行此操作?或者是否有可能在没有实际视图的情况下使用ViewController?

Beset way正在更改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
  }

Beset方法是更改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上是不对的

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来执行该逻辑并没有错,毕竟在didFinishLaunching中,您可以自由地执行任何操作

正如你所说,PreMain将短暂出现

这里的链接可以帮助你

避免“风投来得快,消失得快”

但我想把这个放在AppDelegate上是不对的

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来执行该逻辑并没有错,毕竟在didFinishLaunching中,您可以自由地执行任何操作

正如你所说,PreMain将短暂出现

这里的链接可以帮助你

避免“风投来得快,消失得快”

但我想把这个放在AppDelegate上是不对的

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
  }
事实上,这是不对的!如果您试图通过实例化预视图控制器来解决问题,正如您所提到的,那将是“不正确”的情况

如文件中所述:

告诉学员启动过程即将完成,应用程序 快准备好跑步了

这似乎是确定所需初始视图控制器的一个良好起点。您可能需要检查:Q&a为了实现它,您所要做的就是实现选择所需视图控制器的逻辑

但我想把这个放在AppDelegate上是不对的

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
  }
事实上,这是不对的!如果您试图通过实例化预视图控制器来解决问题,正如您所提到的,那将是“不正确”的情况

如文件中所述:

告诉学员启动过程即将完成,应用程序 快准备好跑步了


这似乎是确定所需初始视图控制器的一个很好的起点。您可能需要检查:Q&a为了实现它,您所要做的就是实现选择所需视图控制器的逻辑。

是的,我将测试应该完成工作的代理,谢谢。是的,我将测试代理一个应该做这项工作的人,谢谢你是对的,代表应该做我错了的事情,谢谢,但是当设置故事板为rootview时,它只显示黑屏。你试过我提到的问题的答案吗?不仅是被接受的答案。是的,我都试过了,我以前没有使用故事板作为启动器,所以它是从info.plist中删除,这可能是问题吗?不这样认为,我自己设置了根视图修复了它,我忘记了在初始版本中设置一个。是的,你是对的,代表应该做我做错的事情。谢谢,但在将故事板设置为根视图时,它只显示黑屏。你尝试过que中的答案吗我提到的问题?不仅仅是被接受的问题。是的,我都试过了,我以前没有使用故事板作为启动器,所以它被从info.plist中删除,这可能是问题吗?不这样认为,我自己设置了根视图修复了它,我忘记了将其中一个作为初始VCI。你的想法是正确的,只是让你的preMain VC看起来像一个加载屏幕n、 与LaunchScreen相似/精确。这是一种常见的做法,给您一些时间来处理业务逻辑/ui项加载。您的想法是正确的,只需使您的preMain VC看起来像加载屏幕,与LaunchScreen相似/精确。这是一种常见的做法,给您一些时间来处理业务逻辑/ui项加载。