从 swiftUI 中的一个嵌入式 UIViewController 导航到 swift UI 中的另一个嵌入式 UIViewcontroller
Posted
技术标签:
【中文标题】从 swiftUI 中的一个嵌入式 UIViewController 导航到 swift UI 中的另一个嵌入式 UIViewcontroller【英文标题】:Navigate from one embedded UIViewController in swiftUI to another embedded UIViewcontroller in swift UI 【发布时间】:2021-11-17 22:04:57 【问题描述】:我有一个嵌入在 swiftUI 视图中的 UIViewController
struct ContentView_Previews: PreviewProvider
static var previews: some View
ContentView(overlayShow: OverlayShow())
struct OnboardingWrapper: UIViewControllerRepresentable
var overlayShow: OverlayShow
func makeUIViewController(context: Context) -> ReturnSomthing
let controller = ReturnSomthing(shareConfig: onboardingConfig)
controller.showOverlay = overlayShow
return controller
func updateUIViewController(_ uiViewController: ReturnSomthing, context: Context)
public typealias UIViewControllerType = ReturnSomthing
我希望能够直接从 SwiftUI 导航到另一个带有嵌入式 UIViewController 的 SwiftUI 视图 所以,我在 SwiftUI 的视图上做了
struct ContentView: View
@ObservedObject var overlayShow: OverlayShow = OverlayShow()
var body: some View
NavigationView
NavigationLink(destination: OverlayView(overlay: LoadingUnknownOverlayViewContainer(description: "it is spinning :0", designModel: LoadingOverlayDesignModel(type: .unknown))), isActive: $overlayShow.isShowingOverlay)
OnboardingWrapper(overlayShow: overlayShow)
导航激活的条件是overlayShow.isShowingOverlay
是true
。此变量在 UIViewController 中通过 ObservableObject
进行控制。
问题是无论overlayShow.isShowingOverlay
的值是多少,无论我在哪里点击第一个 UIViewController(OnboardingWrapper
),导航都会被激活并转到下一页。
为了更清楚,我发布了一个屏幕录像。 请问如何解决这个问题。
【问题讨论】:
【参考方案1】:听起来您正在看到 OnboardingWrapper,当您单击它时,您会看到 OverlayView。 也许这会有所帮助:
var body: some View
NavigationView
OnboardingWrapper(overlayShow: overlayShow)
NavigationLink(destination: OverlayView(
overlay:LoadingUnknownOverlayViewContainer(
description: "it is spinning :0",
designModel: LoadingOverlayDesignModel(type: .unknown))),
isActive: $overlayShow.isShowingOverlay)
EmptyView()
会出现OnboardingWrapper,然后当overlayShow.isShowingOverlay为true时,应该呈现OverlayView。
【讨论】:
以上是关于从 swiftUI 中的一个嵌入式 UIViewController 导航到 swift UI 中的另一个嵌入式 UIViewcontroller的主要内容,如果未能解决你的问题,请参考以下文章
在 SwiftUI 中的 tabview 中嵌入 webview
当嵌入到 SwiftUI 中的 ScrollView 中时,VStack 内的内容会缩小
SwiftUI嵌入在Form或Section中的视图上下文菜单(contextMenu)无法独立弹出的解决
使用 XCUIElementQuery 在 SwiftUI 中查找嵌入在表单中的 DatePicker() 的可访问性(标识符:)