我正在将应用程序过渡到iOS 13,并且UISplitViewController折叠到详细信息视图上,而不是在启动时折叠到主视图上-仅在iPad上。此外,后退按钮也没有显示-好像它是根视图控制器一样。
我的应用程序包含一个UISplitViewController已被子类化的,符合UISplitViewControllerDelegate。拆分视图包含两个子视图-两者都UINavigationControllers嵌入到UITabBarController(子类TabViewController)中
在拆分视图中viewDidLoad,委托设置为self,preferredDisplayMode并且设置为.allVisible。
由于某种原因,splitViewController(_:collapseSecondary:onto:)未调用该方法。
在iOS版12在iPhone和iPad上,该方法splitViewController(_:collapseSecondary:onto:)被正确调用的推出,之间application(didFinishLaunchingWithOptions)和applicationDidBecomeActive。
在iPhone上的iOS 13中,该方法在启动时在和之间正确调用。splitViewController(_:collapseSecondary:onto:)scene(willConnectTo session:)sceneWillEnterForeground
在的iOS 13上的iPad,然而,如果该窗口具有发射例如为分割视图中创建新的场景紧凑的宽度,该splitViewController(_:collapseSecondary:onto:)方法没有在所有调用。仅在将窗口扩展到常规宽度然后收缩时才调用该方法。
class SplitViewController: UISplitViewController, UISplitViewControllerDelegate {
override func viewDidLoad() {
super.viewDidLoad()
self.delegate = self
preferredDisplayMode = .allVisible
}
func splitViewController(_ splitViewController: UISplitViewController, collapseSecondary secondaryViewController:UIViewController, onto …Run Code Online (Sandbox Code Playgroud) 在 WWDC20 上引入的新 SwiftUI 应用程序声明允许实现出现在菜单栏中的应用程序命令。这些应该如何连接到子视图中各自的功能?
struct MyApp: App {
var body: some Scene {
WindowGroup {
ContentView()
}
.commands {
CommandGroup(after: CommandGroupPlacement.newItem) {
Button("Do something", action: {
// Call the function in SubView
})
}
}
}
}
struct SubView: View {
var body: some View { ... }
func doSomething() {
}
}
Run Code Online (Sandbox Code Playgroud)
我想到的想法包括:
实现这一目标的最佳实践是什么?
谢谢,非常感谢您的帮助。