问题标签 [uiviewcontrollerrepresentable]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
107 浏览

swiftui - UIViewControllerRepresentable 中的后退按钮转到根视图而不是返回上一个视图

我有一个 SwiftUI 应用程序,它具有三个级别:

  • 主列表(SwiftUI NavigationView)
  • 二级列表(SwiftUI NavigationView)
  • 一个 UIViewControllerRepresentable

在我的二级列表中,我有

然后在 UIViewControllerRepresentable 我有

出现的后退按钮应该返回到辅助列表,但它会返回到主列表。

0 投票
1 回答
153 浏览

swiftui - SwiftUI + UIPageViewController,多种视图类型

我想在我的 SwiftUI 应用程序中使用 UIPageViewController,如本教程所示。但是,本教程传递与页面相同的视图类型,我想传递任何类型的视图。

如果我将 PageView_Previews 中的页面数组更改为 [Color.red, Text("abc")] 之类的内容,则会收到错误消息,因为它们的类型不同。如何让 SwiftUI 在这里允许异构视图类型?

我不能将 TabView 与 PageTabViewStyle 一起使用(很多错误),所以这就是我需要使用这个 UIKit 方法的原因。

0 投票
1 回答
645 浏览

ios - SwiftUI - 从视图中显示自定义 ViewController

Button我有一个View调用自定义视图控制器(UIViewControllerRepresentable),因为我使用的外部库需要一个视图控制器作为参数来显示它自己的弹出窗口(当然我不能改变)。

出于这个原因,我创建了这个中间件视图控制器,但是使用这个逻辑,行为不是我想要的......
两个弹出窗口,一个在另一个之上将被打开。

这是因为这个库不是在 SwiftUI 中创建的,而是经典的 UIKit。


我做了什么:

内容视图

空控制器:


这是这种情况下的结果:

演示

有一种方法可以直接使用

View没有从另一个视图控制器传递并避免多个弹出窗口的情况下?

基本上我不想看到RED View 控制器,而是直接看到GREEN控制器。

0 投票
0 回答
309 浏览

ios - 为什么将绑定注入 UIViewControllerRepresentable 会导致保留周期?

因此,当将作为已发布属性的绑定从 ObservableObject 注入 UIViewControllerRepresentable 时,似乎存在一个保留周期。

似乎如果您在另一个视图中创建一个视图,并且第二个视图具有 ObservableObject 并将其发布的属性注入 UIViewControllerRepresentable 然后在协调器中使用,则在刷新原始视图时永远不会释放 ObservableObject。

此外,Binding 看起来完全被破坏了,并且 UIViewControllerRepresentable 不再起作用

看着它,Coordinator(self) 不好是有道理的,但苹果自己的文档说要这样做。我错过了什么吗?

这是一个简单的例子:

0 投票
0 回答
127 浏览

swift - 从 UIViewControllerRepresentable 发送一个事件到 swiftui 视图

我尝试在 SwiftUI 视图中捕获 UIViewController 中发生的事件。该架构在 SwiftUI 中,在 Swift 中有一个元素:

风景

UIViewControllerRepresentable

UIViewController

在动画结束时,我想打电话给 swiftUIView 进行更新。

我尝试使用一些 ObservableObject 或使用 updateUIViewController 函数。我可以通过 UIViewControllerRepresentable 将数据从 SwiftUI 视图传递到 UIViewController。但是如何恢复 UIViewController 的变化呢?updateUIViewController 似乎没有被调用。

0 投票
0 回答
95 浏览

ios - UIViewControllerRepresentable 高度太大

我正在尝试将 UIKit 上下文菜单添加到 SwiftUI 视图,因为 SwiftUI 上下文菜单非常有限。我设法做到了,但 UIViewControllerRepresentable 占用的空间超出了它的需要。如何调整它的大小以适应其中的内容?这是我的代码。

截图

SwiftUI 代码

UIKit 代码

0 投票
0 回答
38 浏览

swiftui - Tatsi 库通过 UIViewControllerRepresentable 与 SwiftUI 集成

我正在通过 SPM 将Tatsi库集成到我在 SwiftUI 中的项目中,但是我遇到了一个问题,因为没有调用 Tatsi 视图顶部的 Done 并且我无法获取所选图像。

通过 UIViewControllerRepresentable 进行集成的代码如下:

我不知道为什么在选择图像时无法完成完成操作。

我以这种方式集成库是因为我需要对 iOS 13 的支持。

0 投票
4 回答
863 浏览

ios - UIViewControllerRepresentable 未正确占用空间

我正在尝试UIViewController在 SwiftUI 视图中使用自定义。我设置了一个在方法UIViewControllerRepresentable中创建的类。这将创建并显示按钮,但是不占用任何空间。UIViewControllermakeUIViewControllerUIViewControllerUIViewControllerRepresentable

我尝试使用 aUIImagePickerController而不是我的自定义控制器,并且大小正确。我让控制器占用空间的唯一方法是UIViewControllerRepresentable在我的 SwiftUI 视图中设置一个固定框架,我绝对不想这样做。

注意:我确实需要使用 a UIViewController,因为我正在尝试UIMenuController在 SwiftUI 中实现 a。除了我遇到的这个问题之外,我所有的一切都可以正常工作,因为它的尺寸不正确。

这是我的代码:

我的 SwiftUI 视图:

截屏:

问题截图

我对 UIKit 没有太多经验——我唯一的经验是编写 UIKit 视图以在 SwiftUI 中使用。这个问题很可能与我缺乏 UIKit 知识有关。

提前致谢!

编辑:

这是EntityViewItem. 我还将提供ClientView位于 - 中的容器视图EntityView

我还清理了其余代码并Entity用硬编码值替换了对的引用。

的容器ClientView

0 投票
1 回答
133 浏览

ios - 仅在某些视图控制器中延迟系统边缘手势。SwiftUI

我想导航到禁用系统边缘手势的自定义 UIView。我将 SwiftUI 生命周期与 UIViewControllerRepresentable 一起使用并覆盖了preferredScreenEdgesDeferringSystemGestures。

我已经看到了 SceneDelegates 的解决方案。preferredScreenEdgesDeferringSystemGestures 是否必须对 window.rootViewController 起作用才能使其工作?

0 投票
1 回答
99 浏览

swiftui - 从 UIViewControllerRepresentable 中按下的按钮导航到 SwiftUI 视图

我正在使用 Swiftui 列表来显示任务。每个任务都有一个位置。当您单击列表行时,我正在使用 NavigationLink 导航到详细信息页面。

我正在使用 UIViewControllerRepresentable 创建一个地图视图,其中所有任务位置都在地图上进行了注释。我必须使用 UIKit 以便您可以与注释进行交互。我设置了一个在用户单击地图注释附件时触发的委托。

目的:当调用委托函数时,我想传回用于导航到详细信息页面的任务 ID,例如单击列表行时:

雪佛龙右呼代表

列表显示

我从列表中导航的方式:

传回按下的任务 id 的任务列表映射 UIViewControllerRepresentable: