Skip to content

Commit 7fe3ea9

Browse files
committed
fix(ios): home page content view
1 parent a459783 commit 7fe3ea9

1 file changed

Lines changed: 33 additions & 31 deletions

File tree

iOS/dimina/ContentView.swift

Lines changed: 33 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -32,16 +32,16 @@ struct ContentView: View {
3232
}
3333

3434
// 创建小程序配置和实例
35-
let manager: DMPAppManager = DMPAppManager.sharedInstance()
36-
let appConfig: DMPAppConfig = DMPAppConfig(appName: item.appName, appId: item.id)
37-
let app: DMPApp = manager.appWithConfig(appConfig: appConfig)
35+
let manager = DMPAppManager.sharedInstance()
36+
let appConfig = DMPAppConfig(appName: item.appName, appId: item.id)
37+
let app = manager.appWithConfig(appConfig: appConfig)
3838

3939
// 设置DMPNavigator
4040
app.getNavigator()!.setup(navigationController: navController)
4141

4242
// 启动小程序
4343
Task { @MainActor in
44-
let launchConfig: DMPLaunchConfig = DMPLaunchConfig()
44+
let launchConfig = DMPLaunchConfig()
4545
await app.launch(launchConfig: launchConfig)
4646
}
4747
}
@@ -81,33 +81,35 @@ struct ContentView: View {
8181
}
8282
.navigationBarHidden(true)
8383
.onAppear {
84-
// 在视图出现时获取并保存导航控制器
85-
DispatchQueue.main.async {
86-
if ContentView.navigationController == nil,
87-
let windowScene = UIApplication.shared.connectedScenes.first as? UIWindowScene,
88-
let window = windowScene.windows.first,
89-
let rootVC = window.rootViewController {
90-
91-
// 尝试获取根导航控制器
92-
if let navController = rootVC as? UINavigationController {
93-
ContentView.navigationController = navController
94-
} else {
95-
// 如果没有导航控制器,替换根视图控制器为导航控制器
96-
let navController = UINavigationController()
97-
98-
// 创建一个新的ContentView作为根视图
99-
let contentView = ContentView()
100-
let hostingController = UIHostingController(rootView: contentView)
101-
// 设置标题
102-
hostingController.navigationItem.title = "星河小程序"
103-
104-
// 设置为根视图
105-
navController.viewControllers = [hostingController]
106-
window.rootViewController = navController
107-
108-
ContentView.navigationController = navController
109-
}
110-
}
84+
setupNavigationController()
85+
}
86+
}
87+
}
88+
89+
private func setupNavigationController() {
90+
// 在视图出现时获取并保存导航控制器
91+
DispatchQueue.main.async {
92+
if ContentView.navigationController == nil,
93+
let windowScene = UIApplication.shared.connectedScenes.first as? UIWindowScene,
94+
let window = windowScene.windows.first,
95+
let rootVC = window.rootViewController {
96+
97+
// 尝试获取根导航控制器
98+
if let navController = rootVC as? UINavigationController {
99+
ContentView.navigationController = navController
100+
} else {
101+
// 如果没有导航控制器,替换根视图控制器为导航控制器
102+
let navController = UINavigationController()
103+
104+
// 使用UIHostingController包装当前视图,避免重复创建ContentView
105+
let hostingController = UIHostingController(rootView: self)
106+
hostingController.navigationItem.title = "星河小程序"
107+
108+
// 设置为根视图
109+
navController.viewControllers = [hostingController]
110+
window.rootViewController = navController
111+
112+
ContentView.navigationController = navController
111113
}
112114
}
113115
}

0 commit comments

Comments
 (0)