iOS 10打开应用程序正常或使用网址

时间:2017-02-15 07:33:01

标签: ios swift url

我正在使用SplitViewController创建一个iPad应用程序,它应该以两种方式工作。

  1. 您只需打开应用程序,即可看到主表格视图 显示一些作业。这些作业可以是三个中的一个 不同种类。您选择一个作业,并显示一个 详细ViewController使用show detail segue
  2. 您点击了一个链接 从另一个应用程序,打开带有id的应用程序,现在应该只是 提供与id相对应的作业。
  3. 我在AppDelegate中有以下功能:

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        let splitViewController = self.window!.rootViewController as! UISplitViewController
        UIApplication.shared.statusBarStyle = .lightContent
        splitViewController.delegate = self
        splitViewController.preferredDisplayMode = .primaryOverlay
        return true
    }
    
    
    func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
        if let itemid = getQueryStringParameter(url: url.absoluteString, param: "itemid"){
            print(itemid)
            NetworkService().getSpecificExercise(id: itemid) { response, error in
                let exercise = response! as VoiceExercise
                let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle:nil)
                switch exercise.type {
                case "STRENGTH":
                    print("Strength")
                    let initialViewController : StrengthViewController = storyBoard.instantiateViewController(withIdentifier: "StrengthViewController") as! StrengthViewController
                    initialViewController.exercise = exercise
                    self.window?.rootViewController = initialViewController
                    self.window?.makeKeyAndVisible()
                case "RANGE":
                    print("Range")
                    let initialViewController : RangeViewController = storyBoard.instantiateViewController(withIdentifier: "RangeViewController") as! RangeViewController
                    initialViewController.exercise = exercise
                    self.window?.rootViewController = initialViewController
                    self.window?.makeKeyAndVisible()
                case "COMBINED":
                    print("combined")
                    let initialViewController : CombinedViewController = storyBoard.instantiateViewController(withIdentifier: "CombinedViewController") as! CombinedViewController
                    initialViewController.exercise = exercise
                    self.window?.rootViewController = initialViewController
                    self.window?.makeKeyAndVisible()
                default:
                    print(exercise.type)
                }
    
            }
        }
        return true
    }
    

    我的问题是,如果应用程序还没有启动(即没有在后台运行),并且我从另一个应用程序(或通过safari在同一个ipad上的测试链接)打开应用程序,则打开时没有任何反应url函数 - 它只是显示了带有tableview的splitviewcontroller,好像我在它的'上打开了应用程序。拥有。如果应用程序已经打开,它会按预期运行 - 显示我期望的分配。

    现在这就是我想要的。当您结束作业时,如果应用程序已通过链接打开,则会再次打开其他应用程序。 如果我想(当我点击一个链接打开时)显示分配,但包含在一个navigationcontroller中,它包含在splitviewcontroller中,其中splitviewcontroller有其' desiplaymode设置为.primaryHidden,我该怎么做呢。我发现的所有教程只处理Navigationcontroller,不包含在splitviewcontroller中。 (这仍然只适用于开放网址)

0 个答案:

没有答案