我正在使用SplitViewController创建一个iPad应用程序,它应该以两种方式工作。
我在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中。 (这仍然只适用于开放网址)