@@ -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